From 9f2f39cf359aa190c3e403563a3340ba286d04a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?IOhannes=20m=20zm=C3=B6lnig?= Date: Tue, 12 Apr 2005 11:43:07 +0000 Subject: use the real-header files (found in $CVSROOT/pd/src) instead of outdated ones svn path=/trunk/; revision=2732 --- externals/build/include/g_all_guis.h | 324 +----------------- externals/build/include/g_canvas.h | 603 +-------------------------------- externals/build/include/m_imp.h | 79 +---- externals/build/include/m_pd.h | 639 +---------------------------------- externals/build/include/s_stuff.h | 219 +----------- externals/build/include/t_tk.h | 11 +- 6 files changed, 6 insertions(+), 1869 deletions(-) (limited to 'externals/build') diff --git a/externals/build/include/g_all_guis.h b/externals/build/include/g_all_guis.h index 91bf1753..0b724c18 100644 --- a/externals/build/include/g_all_guis.h +++ b/externals/build/include/g_all_guis.h @@ -1,323 +1 @@ -/* 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. */ -/* g_7_guis.h written by Thomas Musil (c) IEM KUG Graz Austria 2000-2001 */ - - -#define IEM_GUI_COLNR_WHITE 0 -#define IEM_GUI_COLNR_ML_GREY 1 -#define IEM_GUI_COLNR_D_GREY 2 -#define IEM_GUI_COLNR_L_RED 3 -#define IEM_GUI_COLNR_L_ORANGE 4 -#define IEM_GUI_COLNR_L_YELLOW 5 -#define IEM_GUI_COLNR_L_GREEN 6 -#define IEM_GUI_COLNR_L_CYAN 7 -#define IEM_GUI_COLNR_L_BLUE 8 -#define IEM_GUI_COLNR_L_MAGENTA 9 - -#define IEM_GUI_COLNR_LL_GREY 10 -#define IEM_GUI_COLNR_M_GREY 11 -#define IEM_GUI_COLNR_DD_GREY 12 -#define IEM_GUI_COLNR_RED 13 -#define IEM_GUI_COLNR_ORANGE 14 -#define IEM_GUI_COLNR_YELLOW 15 -#define IEM_GUI_COLNR_GREEN 16 -#define IEM_GUI_COLNR_CYAN 17 -#define IEM_GUI_COLNR_BLUE 18 -#define IEM_GUI_COLNR_MAGENTA 19 - -#define IEM_GUI_COLNR_L_GREY 20 -#define IEM_GUI_COLNR_MD_GREY 21 -#define IEM_GUI_COLNR_BLACK 22 -#define IEM_GUI_COLNR_D_RED 23 -#define IEM_GUI_COLNR_D_ORANGE 24 -#define IEM_GUI_COLNR_D_YELLOW 25 -#define IEM_GUI_COLNR_D_GREEN 26 -#define IEM_GUI_COLNR_D_CYAN 27 -#define IEM_GUI_COLNR_D_BLUE 28 -#define IEM_GUI_COLNR_D_MAGENTA 29 - -#define IEM_GUI_COLOR_SELECTED 255 -#define IEM_GUI_COLOR_NORMAL 0 - -#define IEM_GUI_MAX_COLOR 30 - -#define IEM_GUI_DEFAULTSIZE 15 -#define IEM_GUI_MINSIZE 8 -#define IEM_GUI_MAXSIZE 1000 -#define IEM_SL_DEFAULTSIZE 128 -#define IEM_SL_MINSIZE 2 -#define IEM_FONT_MINSIZE 4 - -#define IEM_BNG_DEFAULTHOLDFLASHTIME 250 -#define IEM_BNG_DEFAULTBREAKFLASHTIME 50 -#define IEM_BNG_MINHOLDFLASHTIME 50 -#define IEM_BNG_MINBREAKFLASHTIME 10 - -#define IEM_VU_DEFAULTSIZE 3 -#define IEM_VU_LARGESMALL 2 -#define IEM_VU_MINSIZE 2 -#define IEM_VU_MAXSIZE 25 -#define IEM_VU_STEPS 40 - -#define IEM_VU_MINDB -99.9 -#define IEM_VU_MAXDB 12.0 -#define IEM_VU_OFFSET 100.0 - -#define IEM_RADIO_MAX 128 - -#define IEM_SYM_UNIQUE_SND 256 -#define IEM_SYM_UNIQUE_RCV 512 -#define IEM_SYM_UNIQUE_LAB 1024 -#define IEM_SYM_UNIQUE_ALL 1792 -#define IEM_FONT_STYLE_ALL 255 - -#define IEM_MAX_SYM_LEN 127 - -#define IEM_GUI_DRAW_MODE_UPDATE 0 -#define IEM_GUI_DRAW_MODE_MOVE 1 -#define IEM_GUI_DRAW_MODE_NEW 2 -#define IEM_GUI_DRAW_MODE_SELECT 3 -#define IEM_GUI_DRAW_MODE_ERASE 4 -#define IEM_GUI_DRAW_MODE_CONFIG 5 -#define IEM_GUI_DRAW_MODE_IO 6 - - -#define IS_A_POINTER(atom,index) ((atom+index)->a_type == A_POINTER) -#define IS_A_FLOAT(atom,index) ((atom+index)->a_type == A_FLOAT) -#define IS_A_SYMBOL(atom,index) ((atom+index)->a_type == A_SYMBOL) -#define IS_A_DOLLAR(atom,index) ((atom+index)->a_type == A_DOLLAR) -#define IS_A_DOLLSYM(atom,index) ((atom+index)->a_type == A_DOLLSYM) - -#define IEM_FSTYLE_FLAGS_ALL 0x007fffff -#define IEM_INIT_ARGS_ALL 0x01ffffff - -#define IEM_GUI_OLD_SND_FLAG 1 -#define IEM_GUI_OLD_RCV_FLAG 2 - -#define IEM_GUI_COLOR_EDITED 16711680 -#define IEMGUI_MAX_NUM_LEN 32 - -typedef struct _iem_fstyle_flags -{ - unsigned int x_font_style:6; - unsigned int x_rcv_able:1; - unsigned int x_snd_able:1; - unsigned int x_lab_is_unique:1; - unsigned int x_rcv_is_unique:1; - unsigned int x_snd_is_unique:1; - unsigned int x_lab_arg_tail_len:6; - unsigned int x_lab_is_arg_num:6; - unsigned int x_shiftdown:1; - unsigned int x_selected:1; - unsigned int x_finemoved:1; - unsigned int x_put_in2out:1; - unsigned int x_change:1; - unsigned int x_thick:1; - unsigned int x_lin0_log1:1; - unsigned int x_steady:1; - unsigned int dummy:1; -} t_iem_fstyle_flags; - -typedef struct _iem_init_symargs -{ - unsigned int x_loadinit:1; - unsigned int x_rcv_arg_tail_len:6; - unsigned int x_snd_arg_tail_len:6; - unsigned int x_rcv_is_arg_num:6; - unsigned int x_snd_is_arg_num:6; - unsigned int x_scale:1; - unsigned int x_flashed:1; - unsigned int x_locked:1; - unsigned int x_reverse:1; /* bugfix */ - unsigned int dummy:3; -} t_iem_init_symargs; - -typedef void (*t_iemfunptr)(void *x, t_glist *glist, int mode); - -typedef struct _iemgui -{ - t_object x_obj; - t_glist *x_glist; - t_iemfunptr x_draw; - int x_h; - int x_w; - int x_ldx; - int x_ldy; - char x_font[16]; - t_iem_fstyle_flags x_fsf; - int x_fontsize; - t_iem_init_symargs x_isa; - int x_fcol; - int x_bcol; - int x_lcol; - int x_unique_num; - t_symbol *x_snd; - t_symbol *x_rcv; - t_symbol *x_lab; -} t_iemgui; - -typedef struct _iemguidummy -{ - t_iemgui x_gui; - int x_dum1; - int x_dum2; - int x_dum3; -} t_iemguidummy; - -typedef struct _bng -{ - t_iemgui x_gui; - int x_flashed; - int x_flashtime_break; - int x_flashtime_hold; - t_clock *x_clock_hld; - t_clock *x_clock_brk; - t_clock *x_clock_lck; -} t_bng; - -typedef struct _hslider -{ - t_iemgui x_gui; - int x_pos; - int x_val; - int x_center; - int x_thick; - int x_lin0_log1; - int x_steady; - double x_min; - double x_max; - double x_k; -} t_hslider; - -typedef struct _hdial -{ - t_iemgui x_gui; - int x_on; - int x_on_old; - int x_change; - int x_number; - t_atom x_at[2]; -} t_hdial; - -typedef struct _toggle -{ - t_iemgui x_gui; - float x_on; - float x_nonzero; -} t_toggle; - -typedef struct _my_canvas -{ - t_iemgui x_gui; - t_atom x_at[3]; - int x_vis_w; - int x_vis_h; -} t_my_canvas; - -typedef struct _vslider -{ - t_iemgui x_gui; - int x_pos; - int x_val; - int x_lin0_log1; - int x_steady; - double x_min; - double x_max; - double x_k; -} t_vslider; - -typedef struct _vu -{ - t_iemgui x_gui; - int x_led_size; - int x_peak; - int x_rms; - float x_fp; - float x_fr; - int x_scale; - void *x_out_rms; - void *x_out_peak; -} t_vu; - -typedef struct _my_numbox -{ - t_iemgui x_gui; - t_clock *x_clock_reset; - t_clock *x_clock_wait; - double x_val; - double x_min; - double x_max; - double x_k; - int x_lin0_log1; - char x_buf[IEMGUI_MAX_NUM_LEN]; - int x_numwidth; - int x_log_height; -} t_my_numbox; - -typedef struct _vdial -{ - t_iemgui x_gui; - int x_on; - int x_on_old; - int x_change; - int x_number; - t_atom x_at[2]; -} t_vdial; - -#define t_vradio t_vdial -#define t_hradio t_hdial - -extern int sys_noloadbang; -extern int iemgui_color_hex[]; -extern int iemgui_vu_db2i[]; -extern int iemgui_vu_col[]; -extern char *iemgui_vu_scale_str[]; - -EXTERN int iemgui_clip_size(int size); -EXTERN int iemgui_clip_font(int size); -EXTERN int iemgui_modulo_color(int col); -EXTERN t_symbol *iemgui_unique2dollarzero(t_symbol *s, int unique_num, int and_unique_flag); -EXTERN t_symbol *iemgui_sym2dollararg(t_symbol *s, int nth_arg, int tail_len); -EXTERN t_symbol *iemgui_dollarzero2unique(t_symbol *s, int unique_num); -EXTERN t_symbol *iemgui_dollararg2sym(t_symbol *s, int nth_arg, int tail_len, int pargc, t_atom *pargv); -EXTERN int iemgui_is_dollarzero(t_symbol *s); -EXTERN int iemgui_is_dollararg(t_symbol *s, int *tail_len); -EXTERN void iemgui_fetch_unique(t_iemgui *iemgui); -EXTERN void iemgui_fetch_parent_args(t_iemgui *iemgui, int *pargc, t_atom **pargv); -EXTERN void iemgui_verify_snd_ne_rcv(t_iemgui *iemgui); -EXTERN void iemgui_all_unique2dollarzero(t_iemgui *iemgui, t_symbol **srlsym); -EXTERN void iemgui_all_sym2dollararg(t_iemgui *iemgui, t_symbol **srlsym); -EXTERN void iemgui_all_dollarzero2unique(t_iemgui *iemgui, t_symbol **srlsym); -EXTERN void iemgui_all_dollararg2sym(t_iemgui *iemgui, t_symbol **srlsym); -EXTERN void iemgui_first_dollararg2sym(t_iemgui *iemgui, t_symbol **srlsym); -EXTERN void iemgui_all_col2save(t_iemgui *iemgui, int *bflcol); -EXTERN void iemgui_all_colfromload(t_iemgui *iemgui, int *bflcol); -EXTERN int iemgui_compatible_col(int i); -EXTERN void iemgui_all_dollar2raute(t_symbol **srlsym); -EXTERN void iemgui_all_raute2dollar(t_symbol **srlsym); -EXTERN void iemgui_send(void *x, t_iemgui *iemgui, t_symbol *s); -EXTERN void iemgui_receive(void *x, t_iemgui *iemgui, t_symbol *s); -EXTERN void iemgui_label(void *x, t_iemgui *iemgui, t_symbol *s); -EXTERN void iemgui_label_pos(void *x, t_iemgui *iemgui, t_symbol *s, int ac, t_atom *av); -EXTERN void iemgui_label_font(void *x, t_iemgui *iemgui, t_symbol *s, int ac, t_atom *av); -EXTERN void iemgui_size(void *x, t_iemgui *iemgui); -EXTERN void iemgui_delta(void *x, t_iemgui *iemgui, t_symbol *s, int ac, t_atom *av); -EXTERN void iemgui_pos(void *x, t_iemgui *iemgui, t_symbol *s, int ac, t_atom *av); -EXTERN void iemgui_color(void *x, t_iemgui *iemgui, t_symbol *s, int ac, t_atom *av); -EXTERN int iemgui_list(void *x, t_iemgui *iemgui, t_symbol *s, int ac, t_atom *av); -EXTERN void iemgui_displace(t_gobj *z, t_glist *glist, int dx, int dy); -EXTERN void iemgui_select(t_gobj *z, t_glist *glist, int selected); -EXTERN void iemgui_delete(t_gobj *z, t_glist *glist); -EXTERN void iemgui_vis(t_gobj *z, t_glist *glist, int vis); -EXTERN void iemgui_save(t_iemgui *iemgui, t_symbol **srl, int *bflcol); -EXTERN void iemgui_properties(t_iemgui *iemgui, t_symbol **srl); -EXTERN int iemgui_dialog(t_iemgui *iemgui, t_symbol **srl, int argc, t_atom *argv); - -EXTERN int canvas_getdollarzero(void); -EXTERN void canvas_getargs(int *argcp, t_atom **argvp); - -EXTERN void iem_inttosymargs(t_iem_init_symargs *symargp, int n); -EXTERN int iem_symargstoint(t_iem_init_symargs *symargp); -EXTERN void iem_inttofstyle(t_iem_fstyle_flags *fstylep, int n); -EXTERN int iem_fstyletoint(t_iem_fstyle_flags *fstylep); +#include "../../pd/src/g_all_guis.h" diff --git a/externals/build/include/g_canvas.h b/externals/build/include/g_canvas.h index d3070849..cf41d10c 100644 --- a/externals/build/include/g_canvas.h +++ b/externals/build/include/g_canvas.h @@ -1,602 +1 @@ -/* 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) -extern "C" { -#endif - -/* --------------------- geometry ---------------------------- */ -#define IOWIDTH 7 /* width of an inlet/outlet in pixels */ -#define IOMIDDLE ((IOWIDTH-1)/2) -#define GLIST_DEFGRAPHWIDTH 200 -#define GLIST_DEFGRAPHHEIGHT 140 -/* ----------------------- 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; - - /* types to support glists grabbing mouse motion or keys from parent */ -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 _tscalar; -#define t_tscalar struct _tscalar - -EXTERN_STRUCT _canvasenvironment; -#define t_canvasenvironment struct _canvasenvironment - -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 */ - 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 */ - unsigned int e_selectedline: 1; /* one if a line is selected */ -} 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; - -/* 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 */ - 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; - -/* 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 */ - 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, 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; - 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 */ - int gl_font; /* nominal font size in points, e.g., 10 */ - struct _glist *gl_next; /* link in list of toplevels */ - t_canvasenvironment *gl_env; /* root canvases and abstractions only */ - unsigned int gl_havewindow:1; /* true if we own a window */ - unsigned int gl_mapped:1; /* true if, moreover, it's "mapped" */ - unsigned int gl_dirty:1; /* (root canvas only:) patch has changed */ - unsigned int gl_loading:1; /* am now loading from file */ - 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_stretch:1; /* stretch contents on resize */ - unsigned int gl_isgraph:1; /* show as graph on parent */ -}; - -#define gl_gobj gl_obj.te_g -#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; - - -/* T.Grill - changed t_pd member to t_pdobj to avoid name clashed */ -typedef struct _template -{ - t_pd t_pdobj; /* header */ - struct _gtemplate *t_list; /* list of "struct"/gtemplate objects */ - t_symbol *t_sym; /* name */ - int t_n; /* number of dataslots (fields) */ - t_dataslot *t_vec; /* array of dataslots */ -} t_template; - -struct _array -{ - int a_n; /* number of elements */ - int a_elemsize; /* size in bytes; LATER get this from template */ - char *a_vec; /* array of elements */ - 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; -}; - - /* structure for traversing all the connections in a glist */ -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; - int tr_x11, tr_y11, tr_x12, tr_y12; - int tr_x21, tr_y21, tr_x22, tr_y22; - int tr_lx1, tr_ly1, tr_lx2, tr_ly2; - t_outconnect *tr_nextoc; - int tr_nextoutno; -} t_linetraverser; - -/* function types used to define graphical behavior for gobjs, a bit like X -widgets. We don't use 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); - /* ... and later, resizing; getting/setting font or 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; -}; - -/* -------- 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... LATER reconsider this */ - - /* bounding rectangle: */ -typedef void (*t_parentgetrectfn)(t_gobj *x, struct _glist *glist, - t_word *data, t_template *tmpl, 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_template *tmpl, 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_template *tmpl, 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_template *tmpl, float basex, float basey, - int state); - /* making visible or invisible */ -typedef void (*t_parentvisfn)(t_gobj *x, struct _glist *glist, - t_word *data, t_template *tmpl, float basex, float basey, - int flag); - /* field a mouse click */ -typedef int (*t_parentclickfn)(t_gobj *x, struct _glist *glist, - t_scalar *sc, t_template *tmpl, 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 void canvas_setcursor(t_glist *x, unsigned int cursornum); - -extern t_canvas *canvas_editing; /* last canvas to start text edting */ -extern t_canvas *canvas_whichfind; /* last canvas we did a find in */ -extern t_canvas *canvas_list; /* list of all root canvases */ -extern t_class *vinlet_class, *voutlet_class; -extern int glist_valid; /* incremented when pointers might be stale */ - -/* ------------------- 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); -EXTERN void gobj_save(t_gobj *x, t_binbuf *b); - -/* -------------------- 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_cleanup(t_glist *x); -EXTERN void glist_free(t_glist *x); - -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 int glist_istoplevel(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_mergefile(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 float glist_dpixtodx(t_glist *x, float dxpix); -EXTERN float glist_dpixtody(t_glist *x, float dypix); - -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 int glist_isgraph(t_glist *x); -EXTERN void glist_redraw(t_glist *x); -EXTERN void glist_drawiofor(t_glist *glist, t_object *ob, int firsttime, - char *tag, int x1, int y1, int x2, int y2); -EXTERN void glist_eraseiofor(t_glist *glist, t_object *ob, char *tag); -EXTERN void canvas_create_editor(t_glist *x, int createit); -void canvas_deletelinesforio(t_canvas *x, t_text *text, - t_inlet *inp, t_outlet *outp); - - -/* -------------------- 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); -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); - -/* -------------------- 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); -EXTERN t_rtext *glist_findrtext(t_glist *gl, t_text *who); -EXTERN void rtext_draw(t_rtext *x); -EXTERN void rtext_erase(t_rtext *x); -EXTERN t_rtext *rtext_remove(t_rtext *first, t_rtext *x); -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 *canvas_class; - -EXTERN t_canvas *canvas_new(void *dummy, 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 void canvas_redraw(t_canvas *x); - -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 *tmpl); -EXTERN void canvas_zapallfortemplate(t_canvas *tmpl); -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_symbol *canvas_realizedollar(t_canvas *x, t_symbol *s); -EXTERN t_canvas *canvas_getrootfor(t_canvas *x); -EXTERN void canvas_dirty(t_canvas *x, t_int n); -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); -EXTERN void canvas_updatewindowlist( void); -EXTERN void canvas_editmode(t_canvas *x, t_floatarg yesplease); -EXTERN int canvas_isabstraction(t_canvas *x); -EXTERN int canvas_istable(t_canvas *x); -EXTERN int canvas_showtext(t_canvas *x); -EXTERN void canvas_vis(t_canvas *x, t_floatarg f); -EXTERN t_canvasenvironment *canvas_getenv(t_canvas *x); -EXTERN void canvas_rename(t_canvas *x, t_symbol *s, t_symbol *dir); -EXTERN void canvas_loadbang(t_canvas *x); -EXTERN int canvas_hitbox(t_canvas *x, t_gobj *y, int xpos, int ypos, - int *x1p, int *y1p, int *x2p, int *y2p); -EXTERN int canvas_setdeleting(t_canvas *x, int flag); - -typedef void (*t_undofn)(t_canvas *canvas, void *buf, - int action); /* a function that does UNDO/REDO */ -#define UNDO_FREE 0 /* free current undo/redo buffer */ -#define UNDO_UNDO 1 /* undo */ -#define UNDO_REDO 2 /* redo */ -EXTERN void canvas_setundo(t_canvas *x, t_undofn undofn, void *buf, - const char *name); -EXTERN void canvas_noundo(t_canvas *x); -EXTERN int canvas_getindex(t_canvas *x, t_gobj *y); - -/* T.Grill - made public for dynamic object creation */ -/* in g_editor.c */ -EXTERN void canvas_connect(t_canvas *x, - t_floatarg fwhoout, t_floatarg foutno,t_floatarg fwhoin, t_floatarg finno); -EXTERN void canvas_disconnect(t_canvas *x, - float index1, float outno, float index2, float inno); -EXTERN int canvas_isconnected (t_canvas *x, - t_text *ob1, int n1, t_text *ob2, int n2); -EXTERN void canvas_selectinrect(t_canvas *x, int lox, int loy, int hix, int hiy); - - -/* ---- functions on canvasses as objects --------------------- */ - -EXTERN void canvas_fattenforscalars(t_canvas *x, - int *x1, int *y1, int *x2, int *y2); -EXTERN void canvas_visforscalars(t_canvas *x, t_glist *glist, int vis); -EXTERN int canvas_clicksub(t_canvas *x, int xpix, int ypix, int shift, - int alt, int dbl, int doit); -EXTERN t_glist *canvas_getglistonsuper(void); - -EXTERN void linetraverser_start(t_linetraverser *t, t_canvas *x); -EXTERN t_outconnect *linetraverser_next(t_linetraverser *t); -EXTERN void linetraverser_skipobject(t_linetraverser *t); - -/* --------------------- 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 *tmpl, - 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 *tmpl, 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 *tmpl, t_gpointer *gp); -EXTERN void word_restore(t_word *wp, t_template *tmpl, - 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); - -/* ------helper routines for "garrays" and "plots" -------------- */ -EXTERN int array_doclick(t_array *array, t_glist *glist, t_gobj *gobj, - t_symbol *elemtemplatesym, - float linewidth, float xloc, float xinc, float yloc, - int xpix, int ypix, int shift, int alt, int dbl, int doit); - -EXTERN void array_getcoordinate(t_glist *glist, - char *elem, int xonset, int yonset, int wonset, int indx, - float basex, float basey, float xinc, - float *xp, float *yp, float *wp); - -EXTERN int array_getfields(t_symbol *elemtemplatesym, - t_canvas **elemtemplatecanvasp, - t_template **elemtemplatep, int *elemsizep, - int *xonsetp, int *yonsetp, int *wonsetp); - -/* --------------------- templates ------------------------- */ -EXTERN t_template *template_new(t_symbol *sym, int argc, t_atom *argv); -EXTERN void template_free(t_template *x); -EXTERN int template_match(t_template *x1, t_template *x2); -EXTERN int template_find_field(t_template *x, t_symbol *name, int *p_onset, - int *p_type, t_symbol **p_arraytype); -EXTERN t_float template_getfloat(t_template *x, t_symbol *fieldname, t_word *wp, - int loud); -EXTERN void template_setfloat(t_template *x, t_symbol *fieldname, t_word *wp, - t_float f, int loud); -EXTERN t_symbol *template_getsymbol(t_template *x, t_symbol *fieldname, - t_word *wp, int loud); -EXTERN void template_setsymbol(t_template *x, t_symbol *fieldname, - t_word *wp, t_symbol *s, int loud); - -EXTERN t_template *gtemplate_get(t_gtemplate *x); -EXTERN t_template *template_findbyname(t_symbol *s); -EXTERN t_canvas *template_findcanvas(t_template *tmpl); - -EXTERN t_float template_getfloat(t_template *x, t_symbol *fieldname, - t_word *wp, int loud); -EXTERN void template_setfloat(t_template *x, t_symbol *fieldname, - t_word *wp, t_float f, int loud); -EXTERN t_symbol *template_getsymbol(t_template *x, t_symbol *fieldname, - t_word *wp, int loud); -EXTERN void template_setsymbol(t_template *x, t_symbol *fieldname, - t_word *wp, t_symbol *s, int loud); - -/* ----------------------- 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); - -#if defined(_LANGUAGE_C_PLUS_PLUS) || defined(__cplusplus) -} -#endif +#include "../../pd/src/g_canvas.h" diff --git a/externals/build/include/m_imp.h b/externals/build/include/m_imp.h index f6724f9c..16afb4a8 100644 --- a/externals/build/include/m_imp.h +++ b/externals/build/include/m_imp.h @@ -1,78 +1 @@ -/* 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. */ - -/* NOTE: this file describes Pd implementation details which may change -in future releases. The public (stable) API is in m_pd.h. */ - -/* 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 */ - t_symbol *c_externdir; /* directory extern was loaded from */ - 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 */ - t_savefn c_savefn; /* function to call when saving */ - t_propertiesfn c_propertiesfn; /* function to start prop dialog */ - 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 */ -}; - - -/* m_obj.c */ -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); -EXTERN int obj_issignalinlet(t_object *x, int m); -EXTERN int obj_issignaloutlet(t_object *x, int m); -EXTERN int obj_nsiginlets(t_object *x); -EXTERN int obj_nsigoutlets(t_object *x); -EXTERN int obj_siginletindex(t_object *x, int m); -EXTERN int obj_sigoutletindex(t_object *x, int m); - -/* 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); +#include "../../pd/src/m_imp.h" diff --git a/externals/build/include/m_pd.h b/externals/build/include/m_pd.h index a4b033d9..724da2ca 100644 --- a/externals/build/include/m_pd.h +++ b/externals/build/include/m_pd.h @@ -1,638 +1 @@ -/* 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. */ - -#ifndef __m_pd_h_ - -#if defined(_LANGUAGE_C_PLUS_PLUS) || defined(__cplusplus) -extern "C" { -#endif - -#define PD_VERSION 0.37 /* oops, don't use this... */ */ -#define PD_MAJOR_VERSION 0 /* ... use these two instead. */ -#define PD_MINOR_VERSION 37 - -#define PD_DEVEL_VERSION 1 /* T.Grill - mark for devel branch */ - - -/* old name for "MSW" flag -- we have to take it for the sake of many old -"nmakefiles" for externs, which will define NT and not MSW */ -#if defined(NT) && !defined(MSW) -#define MSW -#endif - -#ifdef MSW -/* #pragma warning( disable : 4091 ) */ -#pragma warning( disable : 4305 ) /* uncast const double to float */ -#pragma warning( disable : 4244 ) /* uncast float/int conversion etc. */ -#pragma warning( disable : 4101 ) /* unused automatic variables */ -#endif /* MSW */ - - /* the external storage class is "extern" in UNIX; in MSW it's ugly. */ -#ifdef MSW -#ifdef PD_INTERNAL -#define EXTERN __declspec(dllexport) extern -#else -#define EXTERN __declspec(dllimport) extern -#endif /* PD_INTERNAL */ -#else -#define EXTERN extern -#endif /* MSW */ - - /* and depending on the compiler, hidden data structures are - declared differently: */ -#if defined( __GNUC__) || defined( __BORLANDC__ ) || defined( __MWERKS__ ) -#define EXTERN_STRUCT struct -#else -#define EXTERN_STRUCT extern struct -#endif - - -#if !defined(_SIZE_T) && !defined(_SIZE_T_) -#include /* just for size_t -- how lame! */ -#endif - -#define MAXPDSTRING 1000 /* use this for anything you want */ -#define MAXPDARG 5 /* max number of args we can typecheck today */ - -/* signed and unsigned integer types the size of a pointer: */ -/* GG: long is the size of a pointer */ -typedef long t_int; - -typedef float t_float; /* a floating-point number at most the same size */ -typedef float t_floatarg; /* floating-point type for function calls */ - -typedef struct _symbol -{ - char *s_name; - struct _class **s_thing; - struct _symbol *s_next; -} t_symbol; - -EXTERN_STRUCT _array; -#define t_array struct _array /* g_canvas.h */ - -/* pointers to glist and array elements go through a "stub" which sticks -around after the glist or array is freed. The stub itself is deleted when -both the glist/array is gone and the refcount is zero, ensuring that no -gpointers are pointing here. */ - -#define GP_NONE 0 /* the stub points nowhere (has been cut off) */ -#define GP_GLIST 1 /* the stub points to a glist element */ -#define GP_ARRAY 2 /* ... or array */ - -typedef struct _gstub -{ - union - { - struct _glist *gs_glist; /* glist we're in */ - struct _array *gs_array; /* array we're in */ - } gs_un; - int gs_which; /* GP_GLIST/GP_ARRAY */ - int gs_refcount; /* number of gpointers pointing here */ -} t_gstub; - -typedef struct _gpointer /* pointer to a gobj in a glist */ -{ - union - { - struct _scalar *gp_scalar; /* scalar we're in (if glist) */ - union word *gp_w; /* raw data (if array) */ - } gp_un; - int gp_valid; /* number which must match gpointee */ - t_gstub *gp_stub; /* stub which points to glist/array */ -} t_gpointer; - -typedef union word -{ - t_float w_float; - t_symbol *w_symbol; - t_gpointer *w_gpointer; - t_array *w_array; - struct _glist *w_list; - int w_index; -} t_word; - -typedef enum -{ - A_NULL, - A_FLOAT, - A_SYMBOL, - A_POINTER, - A_SEMI, - A_COMMA, - A_DEFFLOAT, - A_DEFSYM, - A_DOLLAR, - A_DOLLSYM, - A_GIMME, - A_CANT -} t_atomtype; - -#define A_DEFSYMBOL A_DEFSYM /* better name for this */ - -typedef struct _atom -{ - t_atomtype a_type; - union word a_w; -} t_atom; - -EXTERN_STRUCT _class; -#define t_class struct _class - -EXTERN_STRUCT _outlet; -#define t_outlet struct _outlet - -EXTERN_STRUCT _inlet; -#define t_inlet struct _inlet - -EXTERN_STRUCT _binbuf; -#define t_binbuf struct _binbuf - -EXTERN_STRUCT _clock; -#define t_clock struct _clock - -EXTERN_STRUCT _outconnect; -#define t_outconnect struct _outconnect - -EXTERN_STRUCT _glist; -#define t_glist struct _glist -#define t_canvas struct _glist /* LATER lose this */ - -typedef t_class *t_pd; /* pure datum: nothing but a class pointer */ - -typedef struct _gobj /* a graphical object */ -{ - t_pd g_pd; /* pure datum header (class) */ - struct _gobj *g_next; /* next in list */ -} t_gobj; - -typedef struct _scalar /* a graphical object holding data */ -{ - t_gobj sc_gobj; /* header for graphical object */ - t_symbol *sc_template; /* template name (LATER replace with pointer) */ - t_word sc_vec[1]; /* indeterminate-length array of words */ -} t_scalar; - -typedef struct _text /* patchable object - graphical, with text */ -{ - t_gobj te_g; /* header for graphical object */ - t_binbuf *te_binbuf; /* holder for the text */ - t_outlet *te_outlet; /* linked list of outlets */ - t_inlet *te_inlet; /* linked list of inlets */ - short te_xpix; /* x&y location (within the toplevel) */ - short te_ypix; - short te_width; /* requested width in chars, 0 if auto */ - unsigned int te_type:2; /* from defs below */ -} t_text; - -#define T_TEXT 0 /* just a textual comment */ -#define T_OBJECT 1 /* a MAX style patchable object */ -#define T_MESSAGE 2 /* a MAX stype message */ -#define T_ATOM 3 /* a cell to display a number or symbol */ - -#define te_pd te_g.g_pd - - /* t_object is synonym for t_text (LATER unify them) */ - -typedef struct _text t_object; - -#define ob_outlet te_outlet -#define ob_inlet te_inlet -#define ob_binbuf te_binbuf -#define ob_pd te_g.g_pd -#define ob_g te_g - -typedef void (*t_method)(void); -typedef void *(*t_newmethod)( void); -typedef void (*t_gotfn)(void *x, ...); - -/* ---------------- pre-defined objects and symbols --------------*/ -EXTERN t_pd pd_objectmaker; /* factory for creating "object" boxes */ -EXTERN t_pd pd_canvasmaker; /* factory for creating canvases */ -EXTERN t_symbol s_pointer; -EXTERN t_symbol s_float; -EXTERN t_symbol s_symbol; -EXTERN t_symbol s_bang; -EXTERN t_symbol s_list; -EXTERN t_symbol s_anything; -EXTERN t_symbol s_signal; -EXTERN t_symbol s__N; -EXTERN t_symbol s__X; -EXTERN t_symbol s_x; -EXTERN t_symbol s_y; -EXTERN t_symbol s_; - -/* --------- prototypes from the central message system ----------- */ -EXTERN void pd_typedmess(t_pd *x, t_symbol *s, int argc, t_atom *argv); -EXTERN void pd_forwardmess(t_pd *x, int argc, t_atom *argv); -EXTERN t_symbol *gensym(char *s); -EXTERN t_gotfn getfn(t_pd *x, t_symbol *s); -EXTERN t_gotfn zgetfn(t_pd *x, t_symbol *s); -EXTERN void nullfn(void); -EXTERN void pd_vmess(t_pd *x, t_symbol *s, char *fmt, ...); -#define mess0(x, s) ((*getfn((x), (s)))((x))) -#define mess1(x, s, a) ((*getfn((x), (s)))((x), (a))) -#define mess2(x, s, a,b) ((*getfn((x), (s)))((x), (a),(b))) -#define mess3(x, s, a,b,c) ((*getfn((x), (s)))((x), (a),(b),(c))) -#define mess4(x, s, a,b,c,d) ((*getfn((x), (s)))((x), (a),(b),(c),(d))) -#define mess5(x, s, a,b,c,d,e) ((*getfn((x), (s)))((x), (a),(b),(c),(d),(e))) -EXTERN void obj_list(t_object *x, t_symbol *s, int argc, t_atom *argv); -EXTERN t_pd *pd_newest(void); - -/* --------------- memory management -------------------- */ -EXTERN void *getbytes(size_t nbytes); -EXTERN void *getzbytes(size_t nbytes); -EXTERN void *copybytes(void *src, size_t nbytes); -EXTERN void freebytes(void *x, size_t nbytes); -EXTERN void *resizebytes(void *x, size_t oldsize, size_t newsize); - -/* -------------------- atoms ----------------------------- */ - -#define SETSEMI(atom) ((atom)->a_type = A_SEMI, (atom)->a_w.w_index = 0) -#define SETCOMMA(atom) ((atom)->a_type = A_COMMA, (atom)->a_w.w_index = 0) -#define SETPOINTER(atom, gp) ((atom)->a_type = A_POINTER, \ - (atom)->a_w.w_gpointer = (gp)) -#define SETFLOAT(atom, f) ((atom)->a_type = A_FLOAT, (atom)->a_w.w_float = (f)) -#define SETSYMBOL(atom, s) ((atom)->a_type = A_SYMBOL, \ - (atom)->a_w.w_symbol = (s)) -#define SETDOLLAR(atom, n) ((atom)->a_type = A_DOLLAR, \ - (atom)->a_w.w_index = (n)) -#define SETDOLLSYM(atom, s) ((atom)->a_type = A_DOLLSYM, \ - (atom)->a_w.w_symbol= (s)) - -EXTERN t_float atom_getfloat(t_atom *a); -EXTERN t_int atom_getint(t_atom *a); -EXTERN t_symbol *atom_getsymbol(t_atom *a); -EXTERN t_symbol *atom_gensym(t_atom *a); -EXTERN t_float atom_getfloatarg(int which, int argc, t_atom *argv); -EXTERN t_int atom_getintarg(int which, int argc, t_atom *argv); -EXTERN t_symbol *atom_getsymbolarg(int which, int argc, t_atom *argv); - -EXTERN void atom_string(t_atom *a, char *buf, unsigned int bufsize); - -/* ------------------ binbufs --------------- */ - -EXTERN t_binbuf *binbuf_new(void); -EXTERN void binbuf_free(t_binbuf *x); -EXTERN t_binbuf *binbuf_duplicate(t_binbuf *y); - -EXTERN void binbuf_text(t_binbuf *x, char *text, size_t size); -EXTERN void binbuf_gettext(t_binbuf *x, char **bufp, int *lengthp); -EXTERN void binbuf_clear(t_binbuf *x); -EXTERN void binbuf_add(t_binbuf *x, int argc, t_atom *argv); -EXTERN void binbuf_addv(t_binbuf *x, char *fmt, ...); -EXTERN void binbuf_addbinbuf(t_binbuf *x, t_binbuf *y); -EXTERN void binbuf_addsemi(t_binbuf *x); -EXTERN void binbuf_restore(t_binbuf *x, int argc, t_atom *argv); -EXTERN void binbuf_print(t_binbuf *x); -EXTERN int binbuf_getnatom(t_binbuf *x); -EXTERN t_atom *binbuf_getvec(t_binbuf *x); -EXTERN void binbuf_eval(t_binbuf *x, t_pd *target, int argc, t_atom *argv); -EXTERN int binbuf_read(t_binbuf *b, char *filename, char *dirname, - int crflag); -EXTERN int binbuf_read_via_path(t_binbuf *b, char *filename, char *dirname, - int crflag); -EXTERN int binbuf_write(t_binbuf *x, char *filename, char *dir, - int crflag); -EXTERN void binbuf_evalfile(t_symbol *name, t_symbol *dir); -EXTERN t_symbol *binbuf_realizedollsym(t_symbol *s, int ac, t_atom *av, - int tonew); - -/* ------------------ clocks --------------- */ - -EXTERN t_clock *clock_new(void *owner, t_method fn); -EXTERN void clock_set(t_clock *x, double systime); -EXTERN void clock_delay(t_clock *x, double delaytime); -EXTERN void clock_unset(t_clock *x); -EXTERN double clock_getlogicaltime(void); -EXTERN double clock_getsystime(void); /* OBSOLETE; use clock_getlogicaltime() */ -EXTERN double clock_gettimesince(double prevsystime); -EXTERN double clock_getsystimeafter(double delaytime); -EXTERN void clock_free(t_clock *x); - -/* ----------------- pure data ---------------- */ -EXTERN t_pd *pd_new(t_class *cls); -EXTERN void pd_free(t_pd *x); -EXTERN void pd_bind(t_pd *x, t_symbol *s); -EXTERN void pd_unbind(t_pd *x, t_symbol *s); -EXTERN t_pd *pd_findbyclass(t_symbol *s, t_class *c); -EXTERN void pd_pushsym(t_pd *x); -EXTERN void pd_popsym(t_pd *x); -EXTERN t_symbol *pd_getfilename(void); -EXTERN t_symbol *pd_getdirname(void); -EXTERN void pd_bang(t_pd *x); -EXTERN void pd_pointer(t_pd *x, t_gpointer *gp); -EXTERN void pd_float(t_pd *x, t_float f); -EXTERN void pd_symbol(t_pd *x, t_symbol *s); -EXTERN void pd_list(t_pd *x, t_symbol *s, int argc, t_atom *argv); -EXTERN void pd_anything(t_pd *x, t_symbol *s, int argc, t_atom *argv); -#define pd_class(x) (*(x)) - -/* ----------------- pointers ---------------- */ -EXTERN void gpointer_init(t_gpointer *gp); -EXTERN void gpointer_copy(const t_gpointer *gpfrom, t_gpointer *gpto); -EXTERN void gpointer_unset(t_gpointer *gp); -EXTERN int gpointer_check(const t_gpointer *gp, int headok); - -/* ----------------- patchable "objects" -------------- */ -EXTERN_STRUCT _inlet; -#define t_inlet struct _inlet -EXTERN_STRUCT _outlet; -#define t_outlet struct _outlet - -EXTERN t_inlet *inlet_new(t_object *owner, t_pd *dest, t_symbol *s1, - t_symbol *s2); -EXTERN t_inlet *pointerinlet_new(t_object *owner, t_gpointer *gp); -EXTERN t_inlet *floatinlet_new(t_object *owner, t_float *fp); -EXTERN t_inlet *symbolinlet_new(t_object *owner, t_symbol **sp); -EXTERN void inlet_free(t_inlet *x); - -EXTERN t_outlet *outlet_new(t_object *owner, t_symbol *s); -EXTERN void outlet_bang(t_outlet *x); -EXTERN void outlet_pointer(t_outlet *x, t_gpointer *gp); -EXTERN void outlet_float(t_outlet *x, t_float f); -EXTERN void outlet_symbol(t_outlet *x, t_symbol *s); -EXTERN void outlet_list(t_outlet *x, t_symbol *s, int argc, t_atom *argv); -EXTERN void outlet_anything(t_outlet *x, t_symbol *s, int argc, t_atom *argv); -EXTERN t_symbol *outlet_getsymbol(t_outlet *x); -EXTERN void outlet_free(t_outlet *x); -EXTERN t_object *pd_checkobject(t_pd *x); - - -/* -------------------- canvases -------------- */ - -EXTERN void glob_setfilename(void *dummy, t_symbol *name, t_symbol *dir); - -EXTERN void canvas_setargs(int argc, t_atom *argv); -EXTERN t_atom *canvas_getarg(int which); -EXTERN t_symbol *canvas_getcurrentdir(void); -EXTERN t_glist *canvas_getcurrent(void); -EXTERN void canvas_makefilename(t_glist *c, char *file, - char *result,int resultsize); -EXTERN t_symbol *canvas_getdir(t_glist *x); -EXTERN int sys_fontwidth(int fontsize); -EXTERN int sys_fontheight(int fontsize); -EXTERN void canvas_dataproperties(t_glist *x, t_scalar *sc, t_binbuf *b); - -/* ---------------- widget behaviors ---------------------- */ - -EXTERN_STRUCT _widgetbehavior; -#define t_widgetbehavior struct _widgetbehavior - -EXTERN_STRUCT _parentwidgetbehavior; -#define t_parentwidgetbehavior struct _parentwidgetbehavior -EXTERN t_parentwidgetbehavior *pd_getparentwidget(t_pd *x); - -/* -------------------- classes -------------- */ - -#define CLASS_DEFAULT 0 /* flags for new classes below */ -#define CLASS_PD 1 -#define CLASS_GOBJ 2 -#define CLASS_PATCHABLE 3 -#define CLASS_NOINLET 8 - -#define CLASS_TYPEMASK 3 - - -EXTERN t_class *class_new(t_symbol *name, t_newmethod newmethod, - t_method freemethod, size_t size, int flags, t_atomtype arg1, ...); -EXTERN void class_addcreator(t_newmethod newmethod, t_symbol *s, - t_atomtype type1, ...); -EXTERN void class_addmethod(t_class *c, t_method fn, t_symbol *sel, - t_atomtype arg1, ...); -EXTERN void class_addbang(t_class *c, t_method fn); -EXTERN void class_addpointer(t_class *c, t_method fn); -EXTERN void class_doaddfloat(t_class *c, t_method fn); -EXTERN void class_addsymbol(t_class *c, t_method fn); -EXTERN void class_addlist(t_class *c, t_method fn); -EXTERN void class_addanything(t_class *c, t_method fn); -EXTERN void class_sethelpsymbol(t_class *c, t_symbol *s); -EXTERN void class_setwidget(t_class *c, t_widgetbehavior *w); -EXTERN void class_setparentwidget(t_class *c, t_parentwidgetbehavior *w); -EXTERN t_parentwidgetbehavior *class_parentwidget(t_class *c); -EXTERN char *class_getname(t_class *c); -EXTERN char *class_gethelpname(t_class *c); -EXTERN void class_setdrawcommand(t_class *c); -EXTERN int class_isdrawcommand(t_class *c); -EXTERN void class_domainsignalin(t_class *c, int onset); -#define CLASS_MAINSIGNALIN(c, type, field) \ - class_domainsignalin(c, (char *)(&((type *)0)->field) - (char *)0) - - /* prototype for functions to save Pd's to a binbuf */ -typedef void (*t_savefn)(t_gobj *x, t_binbuf *b); -EXTERN void class_setsavefn(t_class *c, t_savefn f); -EXTERN t_savefn class_getsavefn(t_class *c); - /* prototype for functions to open properties dialogs */ -typedef void (*t_propertiesfn)(t_gobj *x, struct _glist *glist); -EXTERN void class_setpropertiesfn(t_class *c, t_propertiesfn f); -EXTERN t_propertiesfn class_getpropertiesfn(t_class *c); - -#ifndef PD_CLASS_DEF -#define class_addbang(x, y) class_addbang((x), (t_method)(y)) -#define class_addpointer(x, y) class_addpointer((x), (t_method)(y)) -#define class_addfloat(x, y) class_doaddfloat((x), (t_method)(y)) -#define class_addsymbol(x, y) class_addsymbol((x), (t_method)(y)) -#define class_addlist(x, y) class_addlist((x), (t_method)(y)) -#define class_addanything(x, y) class_addanything((x), (t_method)(y)) -#endif - -/* ------------ printing --------------------------------- */ -EXTERN void post(char *fmt, ...); -EXTERN void startpost(char *fmt, ...); -EXTERN void poststring(char *s); -EXTERN void postfloat(float f); -EXTERN void postatom(int argc, t_atom *argv); -EXTERN void endpost(void); -EXTERN void error(char *fmt, ...); -EXTERN void bug(char *fmt, ...); -EXTERN void pd_error(void *object, char *fmt, ...); -EXTERN void sys_logerror(char *object, char *s); -EXTERN void sys_unixerror(char *object); -EXTERN void sys_ouch(void); - -#ifdef __linux__ -EXTERN char* sys_get_path( void); -#endif -EXTERN void sys_addpath(const char* p); - - -/* ------------ system interface routines ------------------- */ -EXTERN int sys_isreadablefile(const char *name); -EXTERN void sys_bashfilename(const char *from, char *to); -EXTERN void sys_unbashfilename(const char *from, char *to); -EXTERN int open_via_path(const char *name, const char *ext, const char *dir, - char *dirresult, char **nameresult, unsigned int size, int bin); -EXTERN int sched_geteventno(void); -EXTERN double sys_getrealtime(void); - - -/* ------------ threading ------------------- */ -/* T.Grill - see m_sched.c */ - -EXTERN void sys_lock(void); -EXTERN void sys_unlock(void); -EXTERN int sys_trylock(void); - - -/* --------------- signals ----------------------------------- */ - -typedef float t_sample; -#define MAXLOGSIG 32 -#define MAXSIGSIZE (1 << MAXLOGSIG) - -typedef struct _signal -{ - int s_n; /* number of points in the array */ - t_sample *s_vec; /* the array */ - float s_sr; /* sample rate */ - int s_refcount; /* number of times used */ - int s_isborrowed; /* whether we're going to borrow our array */ - struct _signal *s_borrowedfrom; /* signal to borrow it from */ - struct _signal *s_nextfree; /* next in freelist */ - struct _signal *s_nextused; /* next in used list */ -} t_signal; - - -typedef t_int *(*t_perfroutine)(t_int *args); - -EXTERN t_int *plus_perform(t_int *args); -EXTERN t_int *zero_perform(t_int *args); -EXTERN t_int *copy_perform(t_int *args); - -EXTERN void dsp_add_plus(t_sample *in1, t_sample *in2, t_sample *out, int n); -EXTERN void dsp_add_copy(t_sample *in, t_sample *out, int n); -EXTERN void dsp_add_scalarcopy(t_sample *in, t_sample *out, int n); -EXTERN void dsp_add_zero(t_sample *out, int n); - -EXTERN int sys_getblksize(void); -EXTERN float sys_getsr(void); -EXTERN int sys_get_inchannels(void); -EXTERN int sys_get_outchannels(void); - -EXTERN void dsp_add(t_perfroutine f, int n, ...); -EXTERN void dsp_addv(t_perfroutine f, int n, t_int *vec); -EXTERN void pd_fft(float *buf, int npoints, int inverse); -EXTERN int ilog2(int n); - -EXTERN void mayer_fht(float *fz, int n); -EXTERN void mayer_fft(int n, float *real, float *imag); -EXTERN void mayer_ifft(int n, float *real, float *imag); -EXTERN void mayer_realfft(int n, float *real); -EXTERN void mayer_realifft(int n, float *real); - -EXTERN float *cos_table; -#define LOGCOSTABSIZE 9 -#define COSTABSIZE (1<