Update of /cvsroot/pure-data/pd/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31269
Modified Files: Tag: desiredata desire.c Log Message: cleanup
Index: desire.c =================================================================== RCS file: /cvsroot/pure-data/pd/src/Attic/desire.c,v retrieving revision 1.1.2.217.2.152 retrieving revision 1.1.2.217.2.153 diff -C2 -d -r1.1.2.217.2.152 -r1.1.2.217.2.153 *** desire.c 10 Jul 2007 23:35:00 -0000 1.1.2.217.2.152 --- desire.c 11 Jul 2007 18:32:46 -0000 1.1.2.217.2.153 *************** *** 1726,1730 **** t_template *elemtemplate; int elemsize, yonset, wonset, xonset, incr; ! float xsum=0; if (elemtemplatesym == &s_float) return 0; if (array_getfields(elemtemplatesym, &elemtemplatecanvas, --- 1726,1730 ---- t_template *elemtemplate; int elemsize, yonset, wonset, xonset, incr; ! //float xsum=0; if (elemtemplatesym == &s_float) return 0; if (array_getfields(elemtemplatesym, &elemtemplatecanvas, *************** *** 1734,1745 **** if (array->n < 2000) incr=1; else incr = array->n/300; for (int i=0; i < array->n; i += incr) { ! float usexloc, useyloc; ! if (xonset>=0) usexloc = xloc + slot_cvttocoord(xfield, *(float *)&array->vec[elemsize*i+xonset]); ! else usexloc = xloc + xsum, xsum += xinc; ! useyloc = yloc + (yonset>=0 ? slot_cvttocoord(yfield, *(float *)&array->vec[elemsize*i+yonset]):0); int hit = 0; /* hit = scalar_doclick((t_word *)&array->vec[elemsize*i], elemtemplate, 0, array, canvas, usexloc, useyloc, xpix, ypix, shift, alt, dbl, doit);*/ - if (hit) return hit; } --- 1734,1743 ---- if (array->n < 2000) incr=1; else incr = array->n/300; for (int i=0; i < array->n; i += incr) { ! //float usexloc = xonset>=0 ? xloc + slot_cvttocoord(xfield, *(float *)&array->vec[elemsize*i+xonset]) : xloc + xsum; ! //if (xonset>=0) xsum += xinc; ! //float useyloc = yloc + (yonset>=0 ? slot_cvttocoord(yfield, *(float *)&array->vec[elemsize*i+yonset]):0); int hit = 0; /* hit = scalar_doclick((t_word *)&array->vec[elemsize*i], elemtemplate, 0, array, canvas, usexloc, useyloc, xpix, ypix, shift, alt, dbl, doit);*/ if (hit) return hit; } *************** *** 3021,3027 ****
t_int *vinlet_perform(t_int *w) { ! t_vinlet *x = (t_vinlet *)(w[1]); ! t_float *out = (t_float *)(w[2]); ! int n = (int)(w[3]); t_float *in = x->read; while (n--) *out++ = *in++; --- 3019,3025 ----
t_int *vinlet_perform(t_int *w) { ! t_vinlet *x = (t_vinlet *)w[1]; ! t_float *out = (t_float *)w[2]; ! int n = int(w[3]); t_float *in = x->read; while (n--) *out++ = *in++; *************** *** 3033,3039 **** /* tb: vectorized */ t_int *vinlet_perf8(t_int *w) { ! t_vinlet *x = (t_vinlet *)(w[1]); ! t_float *out = (t_float *)(w[2]); ! int n = (int)(w[3]); t_float *in = x->read; for (; n; n -= 8, in += 8, out += 8) { --- 3031,3037 ---- /* tb: vectorized */ t_int *vinlet_perf8(t_int *w) { ! t_vinlet *x = (t_vinlet *)w[1]; ! t_float *out = (t_float *)w[2]; ! int n = int(w[3]); t_float *in = x->read; for (; n; n -= 8, in += 8, out += 8) { *************** *** 3057,3063 ****
static void vinlet_dsp(t_vinlet *x, t_signal **sp) { - t_signal *outsig; if (!x->buf) return; /* no buffer means we're not a signal inlet */ ! outsig = sp[0]; if (x->directsignal) signal_setborrowed(sp[0], x->directsignal); else { --- 3055,3060 ----
static void vinlet_dsp(t_vinlet *x, t_signal **sp) { if (!x->buf) return; /* no buffer means we're not a signal inlet */ ! t_signal *outsig = sp[0]; if (x->directsignal) signal_setborrowed(sp[0], x->directsignal); else { *************** *** 3065,3069 **** /* if the outsig->v is aligned the x->read will also be... */ if(vecsize&7) dsp_add(vinlet_perform, 3, x, outsig->v,vecsize); ! else if(SIMD_CHECK1(n,outsig->v)) dsp_add(vinlet_perfsimd, 3, x, outsig->v,vecsize); else dsp_add(vinlet_perf8, 3, x, outsig->v,vecsize); --- 3062,3066 ---- /* if the outsig->v is aligned the x->read will also be... */ if(vecsize&7) dsp_add(vinlet_perform, 3, x, outsig->v,vecsize); ! else if(SIMD_CHECK1(outsig->n,outsig->v)) dsp_add(vinlet_perfsimd, 3, x, outsig->v,vecsize); else dsp_add(vinlet_perf8, 3, x, outsig->v,vecsize); *************** *** 3249,3253 **** int voutlet_issignal(t_voutlet *x) {return x->buf!=0;}
! /* LATER optimize for non-overlapped case where the "+=" isn't needed */ t_int *voutlet_perform(t_int *w) { t_voutlet *x = (t_voutlet *)(w[1]); --- 3246,3250 ---- int voutlet_issignal(t_voutlet *x) {return x->buf!=0;}
! /* LATER optimize for non-overlapped case where the "+=" isn't needed */ t_int *voutlet_perform(t_int *w) { t_voutlet *x = (t_voutlet *)(w[1]); *************** *** 3267,3272 **** /* epilog code for blocking: write buffer to parent patch */ static t_int *voutlet_doepilog(t_int *w) { ! t_voutlet *x = (t_voutlet *)(w[1]); ! t_float *out = (t_float *)(w[2]); /* IOhannes */ t_float *in = x->empty; if (x->updown.downsample != x->updown.upsample) out = x->updown.v; /* IOhannes */ --- 3264,3269 ---- /* epilog code for blocking: write buffer to parent patch */ static t_int *voutlet_doepilog(t_int *w) { ! t_voutlet *x = (t_voutlet *)w[1]; ! t_float *out = (t_float *)w[2]; /* IOhannes */ t_float *in = x->empty; if (x->updown.downsample != x->updown.upsample) out = x->updown.v; /* IOhannes */ *************** *** 3279,3283 **** /* IOhannes { */ static t_int *voutlet_doepilog_resampling(t_int *w) { ! t_voutlet *x = (t_voutlet *)(w[1]); t_float *in = x->empty; t_float *out = x->updown.v; /* IOhannes */ --- 3276,3280 ---- /* IOhannes { */ static t_int *voutlet_doepilog_resampling(t_int *w) { ! t_voutlet *x = (t_voutlet *)w[1]; t_float *in = x->empty; t_float *out = x->updown.v; /* IOhannes */ *************** *** 3307,3317 ****
static void voutlet_dsp(t_voutlet *x, t_signal **sp) { - t_signal *insig; if (!x->buf) return; ! insig = sp[0]; if (x->justcopyout) dsp_add_copy(insig->v, x->directsignal->v, insig->n); else if (x->directsignal) { ! /* if we're just going to make the signal available on the ! parent patch, hand it off to the parent signal. */ /* this is done elsewhere--> sp[0]->refcount++; */ signal_setborrowed(x->directsignal, sp[0]); --- 3304,3312 ----
static void voutlet_dsp(t_voutlet *x, t_signal **sp) { if (!x->buf) return; ! t_signal *insig = sp[0]; if (x->justcopyout) dsp_add_copy(insig->v, x->directsignal->v, insig->n); else if (x->directsignal) { ! /* if we're just going to make the signal available on the parent patch, hand it off to the parent signal. */ /* this is done elsewhere--> sp[0]->refcount++; */ signal_setborrowed(x->directsignal, sp[0]); *************** *** 3366,3370 **** /* IOhannes { */ x->empty = x->buf + re_parentvecsize * epilogphase; ! if (upsample * downsample == 1) dsp_add(voutlet_doepilog, 3, x, outsig->v, re_parentvecsize); else { --- 3361,3365 ---- /* IOhannes { */ x->empty = x->buf + re_parentvecsize * epilogphase; ! if (upsample*downsample==1) dsp_add(voutlet_doepilog, 3, x, outsig->v, re_parentvecsize); else { *************** *** 3393,3405 **** x->endbuf = x->buf = (t_float *)getalignedbytes(0); x->bufsize = 0; - resample_init(&x->updown); - /* this should be though over: * it might prove hard to provide consistency between labeled up- & downsampling methods * maybe indeces would be better... ! * ! * up till now we provide several upsampling methods and 1 single downsampling method (no filtering !) ! */ if (s){ char c=*s->name; --- 3388,3396 ---- x->endbuf = x->buf = (t_float *)getalignedbytes(0); x->bufsize = 0; resample_init(&x->updown); /* this should be though over: * it might prove hard to provide consistency between labeled up- & downsampling methods * maybe indeces would be better... ! * up till now we provide several upsampling methods and 1 single downsampling method (no filtering !) */ if (s){ char c=*s->name; *************** *** 3414,3418 **** }
- static void voutlet_setup() { t_class *c = voutlet_class = class_new2("outlet",voutlet_new,voutlet_free,sizeof(t_voutlet),CLASS_NOINLET,"S"); --- 3405,3408 ---- *************** *** 3549,3556 **** goty = template_find_field(t,&s_y,&yonset,&ytype,&zz); if (goty && (ytype != DT_FLOAT)) goty = 0; ! if (gotx) *(t_float *)(((char *)(x->v)) + xonset) += ! dx * (canvas_pixelstox(canvas, 1) - canvas_pixelstox(canvas, 0)); ! if (goty) *(t_float *)(((char *)(x->v)) + yonset) += ! dy * (canvas_pixelstoy(canvas, 1) - canvas_pixelstoy(canvas, 0)); scalar_redraw(x, canvas); }*/ --- 3539,3544 ---- goty = template_find_field(t,&s_y,&yonset,&ytype,&zz); if (goty && (ytype != DT_FLOAT)) goty = 0; ! if (gotx) *(t_float *)(((char *)(x->v)) + xonset) += dx * (canvas_pixelstox(canvas, 1) - canvas_pixelstox(canvas, 0)); ! if (goty) *(t_float *)(((char *)(x->v)) + yonset) += dy * (canvas_pixelstoy(canvas, 1) - canvas_pixelstoy(canvas, 0)); scalar_redraw(x, canvas); }*/ *************** *** 3653,3662 **** /* This file contains text objects you would put in a canvas to define a ! template. Templates describe objects of type "array" (g_array.c) and ! "scalar" (g_scalar.c). ! */ ! ! /* the structure of a "struct" object (also the obsolete "gtemplate" ! you get when using the name "template" in a box.) */ struct t_gtemplate : t_object { t_template *t; --- 3641,3646 ---- /* This file contains text objects you would put in a canvas to define a ! template. Templates describe objects of type "array" (g_array.c) and "scalar" (g_scalar.c). */ ! /* the structure of a "struct" object (also the obsolete "gtemplate" you get when using the name "template" in a box.) */ struct t_gtemplate : t_object { t_template *t; *************** *** 3675,3684 **** /* there's a pre-defined "float" template. LATER should we bind this to a symbol such as "pd-float"??? */
! /* return true if two dataslot definitions match */ static int dataslot_matches(t_dataslot *ds1, t_dataslot *ds2, int nametoo) { ! return (!nametoo || ds1->name == ds2->name) && ! ds1->type == ds2->type && ! (ds1->type != DT_ARRAY || ! ds1->arraytemplate == ds2->arraytemplate); }
--- 3659,3666 ---- /* there's a pre-defined "float" template. LATER should we bind this to a symbol such as "pd-float"??? */
! /* return true if two dataslot definitions match */ static int dataslot_matches(t_dataslot *ds1, t_dataslot *ds2, int nametoo) { ! return (!nametoo || ds1->name == ds2->name) && ds1->type == ds2->type && ! (ds1->type != DT_ARRAY || ds1->arraytemplate == ds2->arraytemplate); }
*************** *** 3717,3721 **** x->vec[oldn].name = newname; x->vec[oldn].arraytemplate = newarraytemplate; ! bad: argc -= 2; argv += 2; } --- 3699,3703 ---- x->vec[oldn].name = newname; x->vec[oldn].arraytemplate = newarraytemplate; ! bad: argc -= 2; argv += 2; } *************** *** 3773,3779 **** if (x1->n < x2->n) return 0; for (int i=x2->n; i < x1->n; i++) ! if (x1->vec[i].type == DT_ARRAY || ! x1->vec[i].type == DT_LIST) ! return 0; if (x2->n > x1->n) post("add elements..."); for (int i=0; i < x2->n; i++) if (!dataslot_matches(&x1->vec[i], &x2->vec[i], 1)) return 0; --- 3755,3759 ---- if (x1->n < x2->n) return 0; for (int i=x2->n; i < x1->n; i++) ! if (x1->vec[i].type == DT_ARRAY || x1->vec[i].type == DT_LIST) return 0; if (x2->n > x1->n) post("add elements..."); for (int i=0; i < x2->n; i++) if (!dataslot_matches(&x1->vec[i], &x2->vec[i], 1)) return 0; *************** *** 3794,3799 **** for (int i=0; i<tto->n; i++) { if (conformaction[i] >= 0) { ! /* we swap the two, in case it's an array or list, so that ! when "wfrom" is deleted the old one gets cleaned up. */ t_word wwas = wto[i]; wto[i] = wfrom[conformaction[i]]; --- 3774,3778 ---- for (int i=0; i<tto->n; i++) { if (conformaction[i] >= 0) { ! /* we swap the two, in case it's an array or list, so that when "wfrom" is deleted the old one gets cleaned up. */ t_word wwas = wto[i]; wto[i] = wfrom[conformaction[i]]; *************** *** 3816,3821 **** x->t = tfrom->sym; gpointer_setcanvas(&gp, canvas, x); ! /* Here we initialize to the new template, but array and list ! elements will still belong to old template. */ word_init(x->v, tto, &gp); template_conformwords(tfrom, tto, conformaction, scfrom->v, x->v); --- 3795,3799 ---- x->t = tfrom->sym; gpointer_setcanvas(&gp, canvas, x); ! /* Here we initialize to the new template, but array and list elements will still belong to old template. */ word_init(x->v, tto, &gp); template_conformwords(tfrom, tto, conformaction, scfrom->v, x->v); *************** *** 3887,3891 **** t_class *c = g->_class; /* what's the purpose of the assignment here?... consult original code */ ! if (c==scalar_class) g = template_conformscalar(tfrom, tto, conformaction, canvas, (t_scalar *)g); else if (c==canvas_class) template_conformcanvas(tfrom, tto, conformaction, (t_canvas *)g); else if (c==garray_class) template_conformarray(tfrom, tto, conformaction, garray_getarray((t_garray *)g)); --- 3865,3869 ---- t_class *c = g->_class; /* what's the purpose of the assignment here?... consult original code */ ! if (c==scalar_class) g = template_conformscalar(tfrom, tto, conformaction, canvas, (t_scalar *)g); else if (c==canvas_class) template_conformcanvas(tfrom, tto, conformaction, (t_canvas *)g); else if (c==garray_class) template_conformarray(tfrom, tto, conformaction, garray_getarray((t_garray *)g)); *************** *** 3929,3935 **** }
! t_template *template_findbyname(t_symbol *s) { ! return (t_template *)pd_findbyclass(s, template_class); ! }
t_canvas *template_findcanvas(t_template *t) { --- 3907,3911 ---- }
! t_template *template_findbyname(t_symbol *s) {return (t_template *)pd_findbyclass(s, template_class);}
t_canvas *template_findcanvas(t_template *t) { *************** *** 3990,3994 **** if (*x->sym->name) pd_unbind(x,x->sym); free(x->vec); - }
--- 3966,3969 ---- *************** *** 4315,4319 **** have to allocate memory here. */ for (int i=0; i<n; i++, f += 2) { ! pix[2*i ] = canvas_xtopixels(canvas, basex + slot_getcoord(f, t, data, 1)); pix[2*i+1] = canvas_ytopixels(canvas, basey + slot_getcoord(f+1, t, data, 1)); } --- 4290,4294 ---- have to allocate memory here. */ for (int i=0; i<n; i++, f += 2) { ! pix[2*i ] = canvas_xtopixels(canvas, basex + slot_getcoord(f+0, t, data, 1)); pix[2*i+1] = canvas_ytopixels(canvas, basey + slot_getcoord(f+1, t, data, 1)); } *************** *** 4345,4354 **** t_template *t; t_gpointer gpointer; - } cm;
! /* LATER protect against the template changing or the scalar disappearing ! probably by attaching a gpointer here ... */ ! #if 0 static void curve_motion(void *z, t_floatarg dx, t_floatarg dy) { --- 4320,4326 ---- t_template *t; t_gpointer gpointer; } cm;
! /* LATER protect against the template changing or the scalar disappearing probably by attaching a gpointer here ... */ #if 0 static void curve_motion(void *z, t_floatarg dx, t_floatarg dy) { *************** *** 4533,4541 **** static void plot_vis(t_gobj *z, t_canvas *canvas, t_word *data, t_template *t, float basex, float basey, int tovis) { t_plot *x = (t_plot *)z; ! int elemsize, yonset, wonset, xonset, i; t_canvas *elemtemplatecanvas; t_template *elemtemplate; t_symbol *elemtemplatesym; ! float linewidth, xloc, xinc, yloc, style, usexloc, xsum, yval, vis, scalarvis; t_array *array; int nelem; --- 4505,4513 ---- static void plot_vis(t_gobj *z, t_canvas *canvas, t_word *data, t_template *t, float basex, float basey, int tovis) { t_plot *x = (t_plot *)z; ! int elemsize, yonset, wonset, xonset; t_canvas *elemtemplatecanvas; t_template *elemtemplate; t_symbol *elemtemplatesym; ! float linewidth, xloc, xinc, yloc, style, xsum, yval, vis, scalarvis; t_array *array; int nelem; *************** *** 4552,4564 **** float minyval = 1e20, maxyval = -1e20; int ndrawn = 0; ! for (xsum = basex + xloc, i = 0; i < nelem; i++) { float yval; int ixpix, inextx; if (xonset >= 0) { ! usexloc = basex + xloc + *(float *)((elem + elemsize*i) + xonset); ixpix = canvas_xtopixels(canvas, slot_cvttocoord(xslot, usexloc)); inextx = ixpix + 2; } else { ! usexloc = xsum; xsum += xinc; ixpix = canvas_xtopixels(canvas, slot_cvttocoord(xslot, usexloc)); --- 4524,4537 ---- float minyval = 1e20, maxyval = -1e20; int ndrawn = 0; ! xsum = basex + xloc; ! for (int i=0; i<nelem; i++) { float yval; int ixpix, inextx; if (xonset >= 0) { ! float usexloc = basex + xloc + *(float *)((elem + elemsize*i) + xonset); ixpix = canvas_xtopixels(canvas, slot_cvttocoord(xslot, usexloc)); inextx = ixpix + 2; } else { ! float usexloc = xsum; xsum += xinc; ixpix = canvas_xtopixels(canvas, slot_cvttocoord(xslot, usexloc)); *************** *** 4583,4587 **** char outline[20]; int lastpixel = -1, ndrawn = 0; ! float yval = 0, wval = 0, xpix; int ixpix = 0; /* draw the trace */ --- 4556,4560 ---- char outline[20]; int lastpixel = -1, ndrawn = 0; ! float yval = 0, wval = 0; int ixpix = 0; /* draw the trace */ *************** *** 4590,4599 **** /* found "w" field which controls linewidth. The trace is a filled polygon with 2n points. */ //sys_vgui(".x%lx.c create polygon \\n", (long)canvas_getcanvas(canvas)); ! for (i = 0, xsum = xloc; i < nelem; i++) { ! if (xonset >= 0) usexloc = xloc + *(float *)(elem+elemsize*i+xonset); ! else usexloc = xsum, xsum += xinc; ! yval = yonset>=0 ? *(float *)(elem+elemsize*i+yonset) : 0; wval = *(float *)(elem+elemsize*i+wonset); ! xpix = canvas_xtopixels(canvas, basex + slot_cvttocoord(xslot, usexloc)); ixpix = (int)roundf(xpix); if (xonset >= 0 || ixpix != lastpixel) { --- 4563,4572 ---- /* found "w" field which controls linewidth. The trace is a filled polygon with 2n points. */ //sys_vgui(".x%lx.c create polygon \\n", (long)canvas_getcanvas(canvas)); ! xsum = xloc; ! for (int i=0; i<nelem; i++) { ! float usexloc = xonset>=0 ? xloc+*(float *)(elem+elemsize*i+xonset) : (xsum+=xinc); ! float yval = yonset>=0 ? *(float *)(elem+elemsize*i+yonset) : 0; wval = *(float *)(elem+elemsize*i+wonset); ! float xpix = canvas_xtopixels(canvas, basex + slot_cvttocoord(xslot, usexloc)); ixpix = (int)roundf(xpix); if (xonset >= 0 || ixpix != lastpixel) { *************** *** 4608,4617 **** lastpixel = -1; for (int i=nelem-1; i>=0; i--) { ! float usexloc; ! if (xonset >= 0) usexloc = xloc + *(float *)(elem+elemsize*i+xonset); ! else xsum -= xinc, usexloc = xsum; ! if (yonset >= 0) yval = *(float *)(elem+elemsize*i+yonset); else yval = 0; wval = *(float *)((elem + elemsize*i) + wonset); ! xpix = canvas_xtopixels(canvas, basex + slot_cvttocoord(xslot, usexloc)); ixpix = (int)roundf(xpix); if (xonset >= 0 || ixpix != lastpixel) { --- 4581,4588 ---- lastpixel = -1; for (int i=nelem-1; i>=0; i--) { ! float usexloc = xonset>=0 ? xloc+*(float *)(elem+elemsize*i+xonset) : (xsum-=xinc); ! float yval = yonset>=0 ? *(float *)(elem+elemsize*i+yonset) : 0; wval = *(float *)((elem + elemsize*i) + wonset); ! float xpix = canvas_xtopixels(canvas, basex + slot_cvttocoord(xslot, usexloc)); ixpix = (int)roundf(xpix); if (xonset >= 0 || ixpix != lastpixel) { *************** *** 4623,4633 **** if (ndrawn >= 1000) goto ouch; } ! /* TK will complain if there aren't at least 3 points. ! There should be at least two already. */ if (ndrawn < 4) { ! int y = (int)slot_cvttocoord(yslot, yval); ! int w = (int)slot_cvttocoord(wslot, wval); ! sys_vgui("%d %f \\n", ixpix + 10, canvas_ytopixels(canvas, basey + yloc + y + w)); ! sys_vgui("%d %f \\n", ixpix + 10, canvas_ytopixels(canvas, basey + yloc + y - w)); } ouch: --- 4594,4604 ---- if (ndrawn >= 1000) goto ouch; } ! /* TK will complain if there aren't at least 3 points. There should be at least two already. */ if (ndrawn < 4) { ! int y = int(slot_cvttocoord(yslot, yval)); ! int w = int(slot_cvttocoord(wslot, wval)); ! sys_vgui("%d %f %d %f\\n", ! ixpix + 10, canvas_ytopixels(canvas, basey + yloc + y + w), ! ixpix + 10, canvas_ytopixels(canvas, basey + yloc + y - w)); } ouch: *************** *** 4639,4651 **** requested width; otherwise don't draw the trace at all. */ sys_vgui(".x%lx.c create line \\n", (long)canvas_getcanvas(canvas)); ! for (xsum = xloc, i = 0; i < nelem; i++) { ! float usexloc; ! if (xonset >= 0) usexloc = xloc + *(float *)(elem+elemsize*i+xonset); else {usexloc=xsum; xsum+=(int)xinc;} ! if (yonset >= 0) yval = *(float *)(elem+elemsize*i+yonset); else yval = 0; ! xpix = canvas_xtopixels(canvas, basex + slot_cvttocoord(xslot, usexloc)); ixpix = (int)roundf(xpix); if (xonset >= 0 || ixpix != lastpixel) { ! sys_vgui("%d %f \\n", ixpix, ! canvas_ytopixels(canvas, basey + yloc + slot_cvttocoord(yslot, yval))); ndrawn++; } --- 4610,4621 ---- requested width; otherwise don't draw the trace at all. */ sys_vgui(".x%lx.c create line \\n", (long)canvas_getcanvas(canvas)); ! xsum = xloc; ! for (int i=0; i<nelem; i++) { ! float usexloc = xonset>=0 ? xloc+*(float *)(elem+elemsize*i+xonset) : xsum; if (xonset>=0) xsum+=(int)xinc; ! float yval = yonset>=0 ? *(float *)(elem+elemsize*i+yonset) : 0; ! float xpix = canvas_xtopixels(canvas, basex + slot_cvttocoord(xslot, usexloc)); ixpix = (int)roundf(xpix); if (xonset >= 0 || ixpix != lastpixel) { ! sys_vgui("%d %f \\n", ixpix, canvas_ytopixels(canvas, basey + yloc + slot_cvttocoord(yslot, yval))); ndrawn++; } *************** *** 4657,4664 **** else if (ndrawn == 1) sys_vgui("%d %f \\n", ixpix + 10, canvas_ytopixels(canvas, basey + yloc + slot_cvttocoord(yslot, yval))); ! sys_vgui("-width %f\\n", linewidth); ! sys_vgui("-fill %s\\n", outline); ! if (style == PLOTSTYLE_BEZ) sys_vgui("-smooth 1\\n"); ! sys_vgui("-tags plot%lx\n", (long)data); } } --- 4627,4631 ---- else if (ndrawn == 1) sys_vgui("%d %f \\n", ixpix + 10, canvas_ytopixels(canvas, basey + yloc + slot_cvttocoord(yslot, yval))); ! sys_vgui("-width %f -fill %s -smooth %d -tags plot%lx",linewidth,outline,style==PLOTSTYLE_BEZ,(long)data); } } *************** *** 4668,4676 **** int xsum = (int)xloc; for (int i=0; i<nelem; i++) { ! float usexloc, useyloc; ! if (xonset >= 0) ! usexloc = basex + xloc + *(float *)(elem+elemsize*i+xonset); else {usexloc=basex+xsum; xsum+=(int)xinc;} yval = yonset>=0 ? *(float *)(elem+elemsize*i+yonset) : 0; ! useyloc = basey + yloc + slot_cvttocoord(yslot, yval); /*canvas_each(y,elemtemplatecanvas) pd_getparentwidget(y)->w_parentvisfn(y, canvas, (t_word *)(elem+elemsize*i), elemtemplate, usexloc, useyloc, tovis);*/ --- 4635,4642 ---- int xsum = (int)xloc; for (int i=0; i<nelem; i++) { ! //float usexloc = xonset>=0 ? basex + xloc + *(float *)(elem+elemsize*i+xonset) : basex+xsum; ! if (xonset>=0) xsum+=int(xinc); yval = yonset>=0 ? *(float *)(elem+elemsize*i+yonset) : 0; ! //float useyloc = basey + yloc + slot_cvttocoord(yslot, yval); /*canvas_each(y,elemtemplatecanvas) pd_getparentwidget(y)->w_parentvisfn(y, canvas, (t_word *)(elem+elemsize*i), elemtemplate, usexloc, useyloc, tovis);*/ *************** *** 4679,4684 **** } else { /* un-draw the individual points */ ! /* ! if (scalarvis != 0) for (int i=0; i<nelem; i++) canvas_each(y,elemtemplatecanvas) --- 4645,4649 ---- } else { /* un-draw the individual points */ ! /* if (scalarvis != 0) for (int i=0; i<nelem; i++) canvas_each(y,elemtemplatecanvas)