diff --git a/pd/nw/pdgui.js b/pd/nw/pdgui.js index 7ff651541eb567a4da6f280764f6901fea6fbb1d..49e651fa30fb10d6b6515ed735d1039d4ad3cab4 100644 --- a/pd/nw/pdgui.js +++ b/pd/nw/pdgui.js @@ -2930,6 +2930,7 @@ function gui_scalar_configure_gobj(cid, tag, isselected, t1, t2, t3, t4, t5, t6) } function gui_draw_vis(cid, type, attr_array, tag_array) { + // tag_array: [0] = parent_tag, [1] = tag //gui_post("inside gui_draw_vis"); //for(var i = 0; i < arguments.length; i++) { // gui_post("arg1 is " + arguments[i]); diff --git a/pd/src/g_template.c b/pd/src/g_template.c index 9146fcc22867199e854eba717ae268240da303cc..e7e6157a9b5c35b1ad60568a041ada87035ba832 100644 --- a/pd/src/g_template.c +++ b/pd/src/g_template.c @@ -5482,10 +5482,6 @@ static void plot_vis(t_gobj *z, t_glist *glist, t_glist *parentglist, //numbertocolor(fielddesc_getfloat(&x->x_outlinecolor, template, // data, 1), outline); - gui_start_vmess("gui_plot_vis", "xii", - glist_getcanvas(glist), - basex, - basey); if (wonset >= 0) { @@ -5494,6 +5490,11 @@ static void plot_vis(t_gobj *z, t_glist *glist, t_glist *parentglist, //sys_vgui(".x%lx.c create ppolygon \\\n", // glist_getcanvas(glist)); + gui_start_vmess("gui_plot_vis", "xii", + glist_getcanvas(glist), + basex, + basey); + gui_start_array(); gui_s("M"); @@ -5625,6 +5626,12 @@ static void plot_vis(t_gobj *z, t_glist *glist, t_glist *parentglist, segmented line with the requested width; otherwise don't draw the trace at all. */ //sys_vgui(".x%lx.c create polyline \\\n", glist_getcanvas(glist)); + gui_start_vmess("gui_plot_vis", "xii", + glist_getcanvas(glist), + basex, + basey); + + gui_start_array(); gui_s("M"); @@ -5744,19 +5751,40 @@ static void plot_vis(t_gobj *z, t_glist *glist, t_glist *parentglist, /* todo: need to check if plot itself is in an array */ - sys_vgui(".x%lx.c create group -tags {.scelem%lx.%lx} " - "-matrix {{1.0 0.0} {0.0 1.0} {%g %g}} ", - glist_getcanvas(glist), elemtemplatecanvas, - (t_word *)(elem + elemsize * i), - usexloc, useyloc); + //sys_vgui(".x%lx.c create group -tags {.scelem%lx.%lx} " + // "-matrix {{1.0 0.0} {0.0 1.0} {%g %g}} ", + // glist_getcanvas(glist), elemtemplatecanvas, + // (t_word *)(elem + elemsize * i), + // usexloc, useyloc); + char tagbuf[MAXPDSTRING]; + sprintf(tagbuf, "scelem%lx.%lx", elemtemplatecanvas, + (t_word *)(elem + elemsize * i)); + char parent_tagbuf[MAXPDSTRING]; if (in_array) { - sys_vgui("-parent {.scelem%lx.%lx}\n", parentglist, data); + //sys_vgui("-parent {.scelem%lx.%lx}\n", parentglist, data); + sprintf(parent_tagbuf, "scelem%lx.%lx", parentglist, data); } else { - sys_vgui("-parent {.dgroup%lx.%lx}\n", x->x_canvas, data); + //sys_vgui("-parent {.dgroup%lx.%lx}\n", x->x_canvas, data); + sprintf(parent_tagbuf, "dgroup%lx.%lx", x->x_canvas, data); } + char transform_buf[MAXPDSTRING]; + sprintf(transform_buf, "translate(%g,%g)", usexloc, useyloc); + + gui_start_vmess("gui_draw_vis", "xs", + glist_getcanvas(glist), "g"); + gui_start_array(); + gui_s("transform"); + gui_s(transform_buf); + gui_end_array(); + gui_start_array(); + gui_s(parent_tagbuf); + gui_s(tagbuf); + gui_end_array(); + gui_end_vmess(); + for (y = elemtemplatecanvas->gl_list; y; y = y->g_next) { if (pd_class(&y->g_pd) == canvas_class &&