/*************************/ /* Copyright 1988 IRCAM. */ /*************************/ /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++LIST OBJECT DEFINITION */ typedef struct zll /* doubly linked list */ { /* note: no obj header */ long z_x; long z_y; struct zll *z_next; struct zll *z_prev; } Zll; /* ++++++++++++++++++++++++++++++++++++++++++++++++++++FUN-BUFFER OBJECT DEFINITION */ typedef struct funbuff { struct object f_obj; void *f_outlet; void *f_outlet1; void *f_outlet2; struct zll f_head; /* head of double linked list of function elements */ struct zll *f_foot; /* foot in the door pointer for list */ long f_gotoDelta; /* used by goto and next */ long f_selectX; /* selected region start */ long f_selectW; /* selected region width */ struct symbol *f_sym; /* filename */ long f_y; /* y-value from inlet */ char f_yvalid; /* flag that y has been set since x has */ char f_embed; /* flag for embedding funbuff values in patcher */ } Funbuff; #define DEFSIZE 128 /* default size 128 elements */ #define DEFRANGE 128 /* range 0-127 */ #define ELEM long /* table element type */ typedef struct tabwind { struct object w_ob; struct windpub *w_wind; struct symbol *w_sym; ELEM **w_tab; long w_size; /* size of actual table */ long w_range; /* editable range (y values) */ long w_xoff; /* x-value of first point displayed */ long w_yoff; /* y-value of top line */ long w_xshift; /* x-shift for displaying */ long w_yshift; /* y-shift */ long w_xzoom; /* x zoom */ long w_yzoom; /* y zoom */ long w_cliprange; /* range, anded to be 0 mod 1 << w_xzoom */ long w_dpoints; /* display points (size >> xshift rounded up) */ long w_dragx; /* previous x-value changed by dragging */ long w_selstart; /* starting sample of selected region (inclusive) */ long w_selend; /* ending sample of selected region (exclusive) */ long w_saveno; /* added; serial number of last time saved to prevent duplicates */ void *w_clock; /* clock to delay updating */ void *w_qelem; /* qelem to queue updating to low pri */ short w_xdisp; /* number of points displayed */ short w_ydisp; /* number of y-values displayed */ char w_signed; /* flag for signed display */ char w_clkset; /* flag indicating clock is already set */ char w_selmode; /* tool 0 = select,1 = move,2 = line,3 = pencil */ long w_xwas; /* last x value legended */ long w_ywas; /* last x value legended */ short w_xcenter; /* last x point legend drawn at */ short w_ycenter; /* last y point legend drawn at */ Point w_scroll; /* last known scroll values, a la Patcher */ char w_ylegmode; /* 0 for Y legend as numbers, 1 for notes. w_signed turns this off */ char w_embed; /* save it in a patcher */ char w_crossguide; /* show cross guide */ char w_act; /* activated? */ long w_vwas; /* last value legended */ struct num *w_numrange; /* range numerical */ struct num *w_numsize; /* size numerical */ struct table *w_reftab; /* list of reference tables */ struct object *w_client; /* send "tabchanged" message when table is changed */ short w_xscale; /* scrollbar scaling when values > 16 bits */ short w_yscale; } t_tabwind, Tabwind;