diff --git a/externals/build/include/g_all_guis.h b/externals/build/include/g_all_guis.h new file mode 100644 index 0000000000000000000000000000000000000000..6dea0401515f15540071f505da7e9b697b3dc516 --- /dev/null +++ b/externals/build/include/g_all_guis.h @@ -0,0 +1,283 @@ +/* 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_DEFAULTSIZE 15 +#define IEM_GUI_MINSIZE 8 +#define IEM_SL_DEFAULTSIZE 128 +#define IEM_SL_MINSIZE 2 +#define IEM_FONT_MINSIZE 4 + +#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_CONFIG 5 + +#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 IEM_GUI_OLD_SND_FLAG 1 +#define IEM_GUI_OLD_RCV_FLAG 2 + +#define IEMGUI_MAX_NUM_LEN 32 + +#define SCALE_NUM_MINWIDTH 1 +#define SCALE_NUM_MINHEIGHT 8 +#define SCALE_GOP_MINWIDTH 12 +#define SCALE_GOP_MINHEIGHT 12 +#define SCALEHANDLE_WIDTH 5 +#define SCALEHANDLE_HEIGHT 5 +#define LABELHANDLE_WIDTH 5 +#define LABELHANDLE_HEIGHT 5 + +typedef void (*t_iemfunptr)(void *x, t_glist *glist, int mode); + +struct _scalehandle; +typedef void (*t_clickhandlefn)(struct _scalehandle *sh, int newstate); +typedef void (*t_motionhandlefn)(struct _scalehandle *sh, t_floatarg f1, t_floatarg f2); + +EXTERN t_class *scalehandle_class; + +typedef struct _scalehandle +{ + t_pd h_pd; + t_object *h_master; + t_glist *h_glist; // this is the canvas to draw on. Note that when objects are edited, "glist" and "canvas" mean the same. + t_symbol *h_bindsym; + int h_scale; // bool + char h_pathname[37]; // max size for ".x%lx.h%lx" = 5+4*sizeof(long) + char h_outlinetag[18]; // max size for "h%lx" = 2+2*sizeof(long) + int h_dragon; // bool + int h_dragx; + int h_dragy; + int h_offset_x; + int h_offset_y; + int h_vis; // bool + t_clickhandlefn h_clickfn; + t_motionhandlefn h_motionfn; +} t_scalehandle; + +typedef struct _iemgui +{ + t_object x_obj; + t_glist *x_glist; + t_iemfunptr x_draw; //29 /* this should be static */ + int x_h; //unsigned //80 + int x_w; //unsigned //119 + int x_ldx; //33 + int x_ldy; //33 + int x_fontsize;//uns. //41 + int x_fcol;//iemcolor //35 /* foreground */ + int x_bcol;//iemcolor //41 /* background */ + int x_lcol;//iemcolor //21 /* label */ + t_symbol *x_snd; //18 /* send symbol */ + t_symbol *x_rcv; //33 /* receive */ + t_symbol *x_lab; //15 /* label */ + t_symbol *x_snd_unexpanded; //7 /* same 3, with '$' unexpanded */ + t_symbol *x_rcv_unexpanded; //7 + t_symbol *x_lab_unexpanded; //6 + int x_binbufindex; //4 /* where in binbuf to find these (this should be static) */ + int x_labelbindex; //5 /* where in binbuf to find label (this should be static) */ + t_scalehandle *x_handle; //24 + t_scalehandle *x_lhandle; //19 + int x_vis; //bool //64 /* is the object drawn? */ + int x_changed; //bool //30 /* has the value changed so that we need to do graphic update */ + + // grep -w "$1" *.[ch]|wc -l + t_glist *x_selected; // 24 matches + // from t_iem_fstyle_flags + unsigned int x_font_style:6; // 33 matches + unsigned int x_finemoved:1; // 7 matches (sliders and [nbx] only) + unsigned int x_put_in2out:1; // 9 matches + unsigned int x_change:1; // 28 matches // what's this and why is there also a x_changed ? + // from t_iem_init_symargs + unsigned int x_loadinit:1; // 21 matches + unsigned int x_locked:1; // 7 matches ([bng] only) + unsigned int x_reverse:1; // 4 matches (sliders only) + unsigned int dummy:20; +} t_iemgui; + +typedef struct _bng +{ + t_iemgui x_gui; + int x_flashed; // bool + int x_flashtime_break; // >= 0 + int x_flashtime_hold; // >= 0 + t_clock *x_clock_hld; + t_clock *x_clock_brk; + t_clock *x_clock_lck; +} t_bng; + +typedef struct _slider +{ + t_iemgui x_gui; + int x_pos; + int x_val; + int x_center; // is this necessary ? + int x_thick; // bool + int x_lin0_log1; // bool + int x_steady; // bool + double x_min; + double x_max; + double x_k; + double x_last; + int x_is_last_float; // bool + int x_orient; // bool: 0=horizontal ([hsl]), 1=vertical ([vsl]) +} t_slider; + +typedef struct _radio +{ + t_iemgui x_gui; + int x_on; // unsigned < x_number + int x_on_old; /* for use by [hdl] [vdl] */ + int x_change; // bool + int x_number; // unsigned > 0 + int x_drawn; // unsigned < x_number + t_atom x_at[2]; // tmp buffer for outlet_list + int x_orient; // bool: 0=horiz, 1=vert +} t_radio; + +typedef struct _toggle +{ + t_iemgui x_gui; + t_float x_on; + t_float x_nonzero; +} t_toggle; + +typedef struct _my_canvas +{ + t_iemgui x_gui; + t_atom x_at[2]; // tmp buffer for outlet_list + int x_vis_w; // unsigned + int x_vis_h; // unsigned +} t_my_canvas; + +typedef struct _vu +{ + t_iemgui x_gui; + int x_led_size; // unsigned + int x_peak; // 1..40 if visible ; 0 if invisible + int x_rms; // 1..40 if visible ; 0 if invisible + t_float x_fp; // value for outlet 1 + t_float x_fr; // value for outlet 0 + int x_scale; // bool + t_outlet *x_out_rms; // outlet 0 + t_outlet *x_out_peak; // outlet 1 + unsigned int x_updaterms:1; + unsigned int x_updatepeak:1; +} 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; // bool + char x_buf[IEMGUI_MAX_NUM_LEN]; + int x_numwidth; // unsigned + int x_scalewidth; /* temporary value for scalehandle */ + int x_scaleheight; /* temporary value for scalehandle */ + int x_tmpfontsize; /* temporary value for scalehandle */ + int x_log_height; + int x_hide_frame; /* 0 default, 1 just arrow, 2, just frame, 3 both */ +} t_my_numbox; + +extern int sys_noloadbang; +extern int iemgui_color_hex[]; + +EXTERN int iemgui_clip_size(int size); +EXTERN int iemgui_clip_font(int size); +EXTERN void iemgui_verify_snd_ne_rcv(t_iemgui *iemgui); +EXTERN t_symbol *iemgui_getfloatsym(t_atom *a); +EXTERN t_symbol *iemgui_getfloatsymarg(int i, int argc, t_atom *argv); +EXTERN void iemgui_new_getnames(t_iemgui *iemgui, int indx, t_atom *argv); +EXTERN void iemgui_all_colfromload(t_iemgui *iemgui, int *bflcol); +EXTERN void iemgui_send(t_iemgui *x, t_symbol *s); +EXTERN void iemgui_receive(t_iemgui *x, t_symbol *s); +EXTERN void iemgui_label(t_iemgui *x, t_symbol *s); +EXTERN void iemgui_label_pos(t_iemgui *x, t_symbol *s, int ac, t_atom *av); +EXTERN void iemgui_label_font(t_iemgui *x, t_symbol *s, int ac, t_atom *av); +EXTERN void iemgui_label_getrect(t_iemgui x_gui, t_glist *x, int *xp1, int *yp1, int *xp2, int *yp2); +EXTERN void iemgui_shouldvis(t_iemgui *x, int mode); +EXTERN void iemgui_size(t_iemgui *x); +EXTERN void iemgui_delta(t_iemgui *x, t_symbol *s, int ac, t_atom *av); +EXTERN void iemgui_pos(t_iemgui *x, t_symbol *s, int ac, t_atom *av); +EXTERN void iemgui_color(t_iemgui *x, 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_displace_withtag(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 *x, t_symbol **srl, int *bflcol); +EXTERN void iemgui_properties(t_iemgui *x, t_symbol **srl); +EXTERN int iemgui_dialog(t_iemgui *x, int argc, t_atom *argv); + +EXTERN void iem_inttosymargs(t_iemgui *x, int n); +EXTERN int iem_symargstoint(t_iemgui *x); +EXTERN void iem_inttofstyle(t_iemgui *x, int n); +EXTERN int iem_fstyletoint(t_iemgui *x); + +EXTERN void canvas_apply_setundo(t_canvas *x, t_gobj *y); + +// scalehandle code, as refactored by Mathieu +EXTERN void scalehandle_draw_select(t_scalehandle *h, int px, int py); +EXTERN void scalehandle_draw_select2(t_iemgui *x); +EXTERN void scalehandle_draw_erase(t_scalehandle *h); +EXTERN void scalehandle_draw_erase2(t_iemgui *x); +EXTERN void scalehandle_draw(t_iemgui *x); +EXTERN t_scalehandle *scalehandle_new(t_object *x, t_glist *glist, int scale, t_clickhandlefn chf, t_motionhandlefn mhf); +EXTERN void scalehandle_free(t_scalehandle *h); +EXTERN void properties_set_field_int(long props, const char *gui_field, int value); +EXTERN void scalehandle_dragon_label(t_scalehandle *h, float f1, float f2); +EXTERN void scalehandle_unclick_label(t_scalehandle *h); +EXTERN void scalehandle_click_label(t_scalehandle *h); +EXTERN void scalehandle_click_scale(t_scalehandle *h); +EXTERN void scalehandle_unclick_scale(t_scalehandle *h); +EXTERN void scalehandle_drag_scale(t_scalehandle *h); +EXTERN void iemgui__clickhook3(t_scalehandle *sh, int newstate); + +EXTERN int mini(int a, int b); +EXTERN int maxi(int a, int b); +EXTERN float minf(float a, float b); +EXTERN float maxf(float a, float b); + +// other refactor by Mathieu +EXTERN void iemgui_tag_selected( t_iemgui *x); +EXTERN void iemgui_label_draw_new( t_iemgui *x); +EXTERN void iemgui_label_draw_move( t_iemgui *x); +EXTERN void iemgui_label_draw_config(t_iemgui *x); +EXTERN void iemgui_label_draw_select(t_iemgui *x); +EXTERN void iemgui_io_draw_move(t_iemgui *x); +EXTERN void iemgui_draw_io(t_iemgui *x, int old_sr_flags); +EXTERN void iemgui_base_draw_new(t_iemgui *x); +EXTERN void iemgui_base_draw_move(t_iemgui *x); +EXTERN void iemgui_base_draw_config(t_iemgui *x); +EXTERN void iemgui_draw_new(t_iemgui *x); +EXTERN void iemgui_draw_config(t_iemgui *x); +EXTERN void iemgui_draw_move(t_iemgui *x); +EXTERN void iemgui_draw_erase(t_iemgui *x); +EXTERN void wb_init(t_widgetbehavior *wb, t_getrectfn gr, t_clickfn cl); // rename this to iemgui_wb_init + +extern t_symbol *s_empty; +EXTERN const char *selection_color; +EXTERN const char *border_color; + +static inline int iemgui_has_snd (t_iemgui *x) {return x->x_snd!=s_empty;} +static inline int iemgui_has_rcv (t_iemgui *x) {return x->x_rcv!=s_empty;} +EXTERN const char *iemgui_font(t_iemgui *x); +EXTERN const char *iemgui_typeface(t_iemgui *x); + +EXTERN void iemgui_class_addmethods(t_class *c); +EXTERN void scrollbar_update(t_glist *glist); +EXTERN void iemgui_init(t_iemgui *x, t_floatarg f); + +EXTERN void iemgui_out_bang(t_iemgui *x, int o, int chk_putin); +EXTERN void iemgui_out_float(t_iemgui *x, int o, int chk_putin, t_float f); +EXTERN void iemgui_out_list(t_iemgui *x, int o, int chk_putin, t_symbol *s, int argc, t_atom *argv); + diff --git a/pd/nw/pdgui.js b/pd/nw/pdgui.js index 8d63d283a8f0f98ad1e03661a92220d956c31400..71cbf4207881737add13045e874278bea8b277eb 100644 --- a/pd/nw/pdgui.js +++ b/pd/nw/pdgui.js @@ -2387,16 +2387,6 @@ function gui_iemgui_label_show_drag_handle(cid, tag, state, x, y) { } } -// A workaround for making iemgui labels draggable. Obnoxiously long name -// to remind me how much of a pain it is to be handling stuff like this -// going between the GUI and Pd (as opposed to doing it completely in the GUI). -function gui_add_iemgui_label_resize_listener(cid, tag) { - post("received a message to add a binding for an iemgui handle..."); - var handle = get_item(cid, "clickable_resize_handle"); - - patchwin[cid].window.canvas_events.clickable_resize_handle = true; -} - function gui_create_mycanvas(cid,tag,color,x1,y1,x2_vis,y2_vis,x2,y2) { var rect_vis, rect, g; rect_vis = create_item(cid,"rect", { diff --git a/pd/src/g_all_guis.c b/pd/src/g_all_guis.c index 6d22072365cf79be7590bae13808d5e54df31f06..ee548cf718943eccd3ae224a9c37e9df3d1a0b2b 100644 --- a/pd/src/g_all_guis.c +++ b/pd/src/g_all_guis.c @@ -696,20 +696,6 @@ int maxi(int a, int b) {return a>b?a:b;} float minf(float a, float b) {return a<b?a:b;} float maxf(float a, float b) {return a>b?a:b;} -// in all 20 cases : -// [bng], [tgl], [hradio], [vradio], [hsl], [vsl], [cnv], [nbx], [vu] -// for both scale & label, plus canvas' scale & move. -void scalehandle_bind(t_scalehandle *h) { - //sys_vgui("bind %s <Button> {pd [concat %s _click 1 %%x %%y \\;]}\n", - // h->h_pathname, h->h_bindsym->s_name); - //sys_vgui("bind %s <ButtonRelease> {pd [concat %s _click 0 0 0 \\;]}\n", - // h->h_pathname, h->h_bindsym->s_name); - //sys_vgui("bind %s <Motion> {pd [concat %s _motion %%x %%y \\;]}\n", - // h->h_pathname, h->h_bindsym->s_name); - gui_vmess("gui_add_iemgui_label_resize_listener", "xs", - h->h_glist, h->h_pathname); -} - // in 18 cases only, because canvas does not fit the pattern below. // canvas has no label handle and has a motion handle // but in the case of canvas, the "iemgui" tag is added (it wasn't the case originally) @@ -765,7 +751,6 @@ void scalehandle_draw_select(t_scalehandle *h, int px, int py) { sprintf(tagbuf, "x%lx", (long unsigned int)x); gui_vmess("gui_iemgui_label_show_drag_handle", "xsiii", canvas, tagbuf, 1, px - sx, py - sy); - scalehandle_bind(h); h->h_vis = 1; /* not yet (this is not supported by the current implementation) */ }/* else { diff --git a/pd/src/g_all_guis.h b/pd/src/g_all_guis.h index 32505966b941b8d2d353261b6200eb818805bff7..d446522fa4406ef532d93e17997dcc03f6a3add4 100644 --- a/pd/src/g_all_guis.h +++ b/pd/src/g_all_guis.h @@ -230,7 +230,6 @@ EXTERN int iem_fstyletoint(t_iemgui *x); EXTERN void canvas_apply_setundo(t_canvas *x, t_gobj *y); // scalehandle code, as refactored by Mathieu -EXTERN void scalehandle_bind(t_scalehandle *h); EXTERN void scalehandle_draw_select(t_scalehandle *h, int px, int py); EXTERN void scalehandle_draw_select2(t_iemgui *x); EXTERN void scalehandle_draw_erase(t_scalehandle *h);