diff --git a/externals/ggee/gui/w_envgen.h b/externals/ggee/gui/w_envgen.h index 56fe3cd4ff095d00a78e4027e30857a92a11fb76..e79ad2f4c5216f186a457f63e3d7694fa9946aa7 100644 --- a/externals/ggee/gui/w_envgen.h +++ b/externals/ggee/gui/w_envgen.h @@ -13,45 +13,80 @@ static void draw_inlets(t_envgen *x, t_glist *glist, int firsttime, int nin, int nout) { - int n = nout; - int nplus, i; - int xpos = text_xpix(&x->x_obj,glist); - int ypos = text_ypix(&x->x_obj,glist); - - nplus = (n == 1 ? 1 : n-1); - for (i = 0; i < n; i++) - { - int onset = xpos + (x->w.width-2*BORDER) * i / nplus; - if (firsttime) - sys_vgui(".x%x.c create rectangle %d %d %d %d -tags %xo%d\n", - glist_getcanvas(glist), - onset, ypos + x->w.height - 1 + 2*BORDER, - onset + IOWIDTH, ypos + x->w.height + 2*BORDER, - x, i); - else - sys_vgui(".x%x.c coords %xo%d %d %d %d %d\n", - glist_getcanvas(glist), x, i, - onset, ypos + x->w.height - 1 + 2*BORDER, - onset + IOWIDTH, ypos + x->w.height + 2*BORDER); - } - n = nin; - nplus = (n == 1 ? 1 : n-1); - for (i = 0; i < n; i++) - { - int onset = xpos + (x->w.width - IOWIDTH) * i / nplus - BORDER; - if (firsttime) - sys_vgui(".x%x.c create rectangle %d %d %d %d -tags %xi%d\n", - glist_getcanvas(glist), - onset, ypos - BORDER, - onset + IOWIDTH, ypos + 1 - BORDER, - x, i); - else - sys_vgui(".x%x.c coords %xi%d %d %d %d %d\n", - glist_getcanvas(glist), x, i, - onset, ypos - BORDER, - onset + IOWIDTH, ypos + 1 - BORDER); - - } + int n = nout; + int nplus, i; + int xpos = text_xpix(&x->x_obj,glist); + int ypos = text_ypix(&x->x_obj,glist); + + nplus = (n == 1 ? 1 : n-1); + for (i = 0; i < n; i++) + { + int onset = xpos + (x->w.width-2*BORDER) * i / nplus; + if (firsttime) + { + //sys_vgui(".x%x.c create rectangle %d %d %d %d -tags %xo%d\n", + // glist_getcanvas(glist), + // onset, ypos + x->w.height - 1 + 2*BORDER, + // onset + IOWIDTH, ypos + x->w.height + 2*BORDER, + // x, i); + gui_vmess("gui_gobj_draw_io", "xxxiiiiiisiii", + glist_getcanvas(glist), + x, + x, + onset, + ypos + x->w.height - 1 + 2 * BORDER, + onset + IOWIDTH, + ypos + x->w.height + 2 * BORDER, + xpos, + ypos, + "o", + i, + 0, + 0); + } + else + { + //sys_vgui(".x%x.c coords %xo%d %d %d %d %d\n", + // glist_getcanvas(glist), x, i, + // onset, ypos + x->w.height - 1 + 2*BORDER, + // onset + IOWIDTH, ypos + x->w.height + 2*BORDER); + } + } + n = nin; + nplus = (n == 1 ? 1 : n-1); + for (i = 0; i < n; i++) + { + int onset = xpos + (x->w.width - IOWIDTH) * i / nplus; + if (firsttime) + { + //sys_vgui(".x%x.c create rectangle %d %d %d %d -tags %xi%d\n", + // glist_getcanvas(glist), + // onset, ypos - BORDER, + // onset + IOWIDTH, ypos + 1 - BORDER, + // x, i); + gui_vmess("gui_gobj_draw_io", "xxxiiiiiisiii", + glist_getcanvas(glist), + x, + x, + onset, + ypos, + onset + IOWIDTH, + ypos + 1, + xpos, + ypos, + "i", + i, + 0, + 0); + } + else + { + //sys_vgui(".x%x.c coords %xi%d %d %d %d %d\n", + // glist_getcanvas(glist), x, i, + // onset, ypos - BORDER, + // onset + IOWIDTH, ypos + 1 - BORDER); + } + } } @@ -202,51 +237,71 @@ static void envgen_shownum(t_envgen *x,t_glist* glist) static void envgen_create(t_envgen *x, t_glist *glist) { - int i; - static char buf[1024]; - float xscale,yscale; - int xpos,ypos; - char num[40]; - - xpos = text_xpix(&x->x_obj,glist); - ypos = (int) text_ypix(&x->x_obj,glist); - x->w.numclock = clock_new(x, (t_method) envgen_delnum); - sys_vgui(".x%x.c create rectangle \ -%d %d %d %d -tags %xS -fill "BACKGROUNDCOLOR"\n", - glist_getcanvas(glist), - xpos-BORDER, ypos-BORDER, - xpos + x->w.width+2*BORDER, ypos + x->w.height+2*BORDER, - x); - - xscale = x->w.width/x->duration[x->last_state]; - yscale = x->w.height; - - sprintf(buf,".x%x.c create line",(unsigned int)glist_getcanvas(glist)); - for (i=0;i<=x->last_state;i++) { - sprintf(num," %d %d ",(int)(xpos + x->duration[i]*xscale), - (int)(ypos + x->w.height- x->finalvalues[i]*yscale)); - strcat(buf,num); - } - - sprintf(num,"-tags %pP\n",x); - strcat(buf,num); - sys_vgui("%s",buf); - envgen_create_doodles(x,glist); + int i; + static char buf[1024]; + float xscale, yscale; + int xpos, ypos; + char num[40]; + + xpos = text_xpix(&x->x_obj, glist); + ypos = (int)text_ypix(&x->x_obj, glist); + x->w.numclock = clock_new(x, (t_method)envgen_delnum); + + gui_vmess("gui_gobj_new", "xxsiii", + glist_getcanvas(glist), + x, + "obj", + xpos, + ypos); + + //sys_vgui(".x%x.c create rectangle " + // "%d %d %d %d -tags %xS -fill "BACKGROUNDCOLOR"\n", + // glist_getcanvas(glist), + // xpos-BORDER, ypos-BORDER, + // xpos + x->w.width+2*BORDER, ypos + x->w.height+2*BORDER, + // x); + gui_start_vmess("gui_envgen_draw_bg", "xxsii", + glist_getcanvas(glist), + x, + BACKGROUNDCOLOR, + x->w.width + 2 * BORDER, + x->w.height + 2 * BORDER); + + xscale = x->w.width / x->duration[x->last_state]; + yscale = x->w.height; + + //sprintf(buf,".x%x.c create line",(unsigned int)glist_getcanvas(glist)); + gui_start_array(); + for (i = 0; i <= x->last_state; i++) + { + //sprintf(num," %d %d ", + // (int)(xpos + x->duration[i] * xscale), + // (int)(ypos + x->w.height - x->finalvalues[i] * yscale)); + //strcat(buf,num); + gui_i(x->duration[i] * xscale); + gui_i(x->w.height - x->finalvalues[i] * yscale); + } + gui_end_array(); + gui_end_vmess(); + + //sprintf(num,"-tags %pP\n",x); + //strcat(buf,num); + //sys_vgui("%s",buf); + envgen_create_doodles(x,glist); } - static void envgen_update(t_envgen *x, t_glist *glist) { -int i; - static char buf[1024]; - float xscale,yscale; - char num[40]; - int xpos = text_xpix(&x->x_obj,glist); - int ypos = text_ypix(&x->x_obj,glist); - - sys_vgui(".x%x.c coords %xS \ + int i; + static char buf[1024]; + float xscale,yscale; + char num[40]; + int xpos = text_xpix(&x->x_obj,glist); + int ypos = text_ypix(&x->x_obj,glist); + + sys_vgui(".x%x.c coords %xS \ %d %d %d %d\n", - glist_getcanvas(glist), x, + glist_getcanvas(glist), x, xpos - BORDER, ypos -BORDER, xpos + x->w.width+2*BORDER, ypos + x->w.height+2*BORDER); @@ -310,8 +365,10 @@ static void envgen_getrect(t_gobj *z, t_glist *owner, width = s->w.width + 2*BORDER; height = s->w.height + 2*BORDER; - *xp1 = text_xpix(&s->x_obj,owner)-BORDER; - *yp1 = text_ypix(&s->x_obj,owner)-BORDER; + //*xp1 = text_xpix(&s->x_obj,owner)-BORDER; + //*yp1 = text_ypix(&s->x_obj,owner)-BORDER; + *xp1 = text_xpix(&s->x_obj,owner); + *yp1 = text_ypix(&s->x_obj,owner); *xp2 = text_xpix(&s->x_obj,owner) + width + 4; *yp2 = text_ypix(&s->x_obj,owner) + height + 4; } diff --git a/pd/nw/pdgui.js b/pd/nw/pdgui.js index be2396dee1bfc687e87945f492117ad31262ddb8..4da793634f1801f0c81b7de34b383290683e467d 100644 --- a/pd/nw/pdgui.js +++ b/pd/nw/pdgui.js @@ -2502,7 +2502,7 @@ function gui_mycanvas_coords(cid, tag, vis_width, vis_height, select_width, sele function gui_scalar_new(cid, tag, isselected, t1, t2, t3, t4, t5, t6, is_toplevel) { - // we should probably use create_gobj here, but we"re doing some initial + // we should probably use gui_gobj_new here, but we"re doing some initial // scaling that normal gobjs don't need... var svg = get_item(cid, "patchsvg"), // id for the svg in the DOM matrix, @@ -3148,6 +3148,28 @@ function add_popup(cid, popup) { popup_menu[cid] = popup; } +// envgen +function gui_envgen_draw_bg(cid, tag, bg_color, w, h, points_array) { + var g = get_gobj(cid, tag), + bg, pline; + bg = create_item(cid, "rect", { + width: w, + height: h, + fill: bg_color, + stroke: "black", + "stroke-width": "2", + transform: "translate(0.5, 0.5)" + }); + pline = create_item(cid, "polyline", { + stroke: "black", + fill: "none", + transform: "translate(1, 1)", + points: points_array.join(" ") + }); + g.appendChild(bg); + g.appendChild(pline); +} + exports.add_popup = add_popup; // Kludge to get popup coords to fit the browser's zoom level