Update of /cvsroot/pure-data/pd/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23606
Modified Files: Tag: devel_0_39 desire.c Log Message: .
Index: desire.c =================================================================== RCS file: /cvsroot/pure-data/pd/src/Attic/desire.c,v retrieving revision 1.1.2.176 retrieving revision 1.1.2.177 diff -C2 -d -r1.1.2.176 -r1.1.2.177 *** desire.c 11 Sep 2006 05:00:42 -0000 1.1.2.176 --- desire.c 11 Sep 2006 06:49:42 -0000 1.1.2.177 *************** *** 24,27 **** --- 24,28 ---- #include "m_simd.h" #include <errno.h> + #include <math.h>
#ifdef MSW *************** *** 63,66 **** --- 64,70 ----
static void postatom2(const char *s, int argc, t_atom *argv); + int imin(int a, int b) {return a<b?a:b;} + int imax(int a, int b) {return a>b?a:b;} + t_symbol *s_empty, *s_pd, *s_Pd;
//-------------------------------------------------------------------------- *************** *** 371,381 **** t_symbol *ret; char *name = s->s_name; ! if (*name == '$' && name[1] >= '0' && name[1] <= '9') { t_canvasenvironment *env = canvas_getenv(x); pd_pushsym((t_pd *)x); ret = binbuf_realizedollsym(gensym(name+1), env->argc, env->argv, 1); pd_popsym((t_pd *)x); ! } ! else ret = s; return ret; } --- 375,384 ---- t_symbol *ret; char *name = s->s_name; ! if (*name == '$' && isdigit(name[1])) { t_canvasenvironment *env = canvas_getenv(x); pd_pushsym((t_pd *)x); ret = binbuf_realizedollsym(gensym(name+1), env->argc, env->argv, 1); pd_popsym((t_pd *)x); ! } else ret = s; return ret; } *************** *** 404,410 **** t_symbol *bs = canvas_makebindsym(x->name); t_symbol *Pd = gensym("Pd"); ! if (x->name==Pd) pd_unbind((t_pd *)x, bs); x->name = s; ! if (x->name==Pd) pd_bind((t_pd *)x, bs); if (dir && dir != &s_) canvas_getenv(x)->dir = dir; gobj_changed(x,0); --- 407,413 ---- t_symbol *bs = canvas_makebindsym(x->name); t_symbol *Pd = gensym("Pd"); ! if (x->name!=Pd) pd_unbind((t_pd *)x, bs); x->name = s; ! if (x->name!=Pd) pd_bind((t_pd *)x, bs); if (dir && dir != &s_) canvas_getenv(x)->dir = dir; gobj_changed(x,0); *************** *** 480,486 **** t_canvas *owner = canvas_getcurrent(); t_symbol *s = &s_; ! int vis = 0, width = CANVAS_DEFCANVASWIDTH, height = CANVAS_DEFCANVASHEIGHT; ! int xloc = 0, yloc = CANVAS_DEFCANVASYLOC; ! int font = (owner ? owner->font : sys_defaultfont); char buf[40]; canvas_init(x); --- 483,489 ---- t_canvas *owner = canvas_getcurrent(); t_symbol *s = &s_; ! int width = CANVAS_DEFCANVASWIDTH, xloc = 0; ! int height = CANVAS_DEFCANVASHEIGHT, yloc = CANVAS_DEFCANVASYLOC; ! int vis=0, font = owner?owner->font:sys_defaultfont; char buf[40]; canvas_init(x); *************** *** 512,517 **** canvas_setbounds(x, xloc, yloc, xloc + width, yloc + height); x->owner = owner; ! x->name = *s->s_name ? s : canvas_newfilename ? canvas_newfilename : gensym("Pd"); ! if (strcmp(x->name->s_name, "Pd")) pd_bind((t_pd *)x, canvas_makebindsym(x->name)); x->loading = 1; x->goprect = 0; /* no GOP rectangle unless it's turned on later */ --- 515,520 ---- canvas_setbounds(x, xloc, yloc, xloc + width, yloc + height); x->owner = owner; ! x->name = *s->s_name ? s : canvas_newfilename ? canvas_newfilename : s_Pd; ! if (x->name != s_Pd) pd_bind((t_pd *)x, canvas_makebindsym(x->name)); x->loading = 1; x->goprect = 0; /* no GOP rectangle unless it's turned on later */ *************** *** 575,579 **** if (x1 == x2 || y1 == y2) {x1=0; x2=100; y1=1; y2=-1;} if (px1 >= px2 || py1 >= py2) { ! px1=100; py1=20; px2=100+CANVAS_DEFGRAPHWIDTH; py2=20+CANVAS_DEFGRAPHHEIGHT; } x->name = sym; --- 578,583 ---- if (x1 == x2 || y1 == y2) {x1=0; x2=100; y1=1; y2=-1;} if (px1 >= px2 || py1 >= py2) { ! px1=100; px2=px1+CANVAS_DEFGRAPHWIDTH; ! py1=20; py2=py1+CANVAS_DEFGRAPHHEIGHT; } x->name = sym; *************** *** 582,586 **** x->font = (canvas_getcurrent() ? canvas_getcurrent()->font : sys_defaultfont); x->screenx1 = x->screeny1 = 0; x->screenx2 = 450; x->screeny2 = 300; ! if (strcmp(x->name->s_name, "Pd")) pd_bind((t_pd *)x, canvas_makebindsym(x->name)); x->owner = g; x->isgraph = 1; --- 586,590 ---- x->font = (canvas_getcurrent() ? canvas_getcurrent()->font : sys_defaultfont); x->screenx1 = x->screeny1 = 0; x->screenx2 = 450; x->screeny2 = 300; ! if (x->name != s_Pd) pd_bind((t_pd *)x, canvas_makebindsym(x->name)); x->owner = g; x->isgraph = 1; *************** *** 702,706 **** canvas_vis(x, 0); sys_mgui(x,"delete",""); ! if (strcmp(x->name->s_name, "Pd")) pd_unbind((t_pd *)x, canvas_makebindsym(x->name)); if (x->env) { freebytes(x->env->argv, x->env->argc * sizeof(t_atom)); --- 706,710 ---- canvas_vis(x, 0); sys_mgui(x,"delete",""); ! if (x->name != s_Pd) pd_unbind((t_pd *)x, canvas_makebindsym(x->name)); if (x->env) { freebytes(x->env->argv, x->env->argc * sizeof(t_atom)); *************** *** 759,764 **** if (ap->a_type == A_SYMBOL) { char *buf=ap->a_w.w_symbol->s_name, *bufp; ! if (*buf == '$' && buf[1] >= '0' && buf[1] <= '9') { ! for (bufp = buf+2; *bufp; bufp++) if (*bufp < '0' || *bufp > '9') { SETDOLLSYM(ap, gensym(buf+1)); goto didit; --- 763,768 ---- if (ap->a_type == A_SYMBOL) { char *buf=ap->a_w.w_symbol->s_name, *bufp; ! if (*buf == '$' && isdigit(buf[1])) { ! for (bufp = buf+2; *bufp; bufp++) if (!isdigit(*bufp)) { SETDOLLSYM(ap, gensym(buf+1)); goto didit; *************** *** 770,775 **** if (ap->a_type == A_DOLLSYM) { t_canvasenvironment *e = canvas_getenv(canvas_getcurrent()); ! canvas_rename(x, binbuf_realizedollsym(ap->a_w.w_symbol, ! e->argc, e->argv, 1), 0); } else if (ap->a_type == A_SYMBOL) canvas_rename(x, argv[3].a_w.w_symbol, 0); --- 774,778 ---- if (ap->a_type == A_DOLLSYM) { t_canvasenvironment *e = canvas_getenv(canvas_getcurrent()); ! canvas_rename(x, binbuf_realizedollsym(ap->a_w.w_symbol, e->argc, e->argv, 1), 0); } else if (ap->a_type == A_SYMBOL) canvas_rename(x, argv[3].a_w.w_symbol, 0); *************** *** 1297,1301 **** for (i = 0; i < ac; i++) { if (av[i].a_type == A_SYMBOL) { ! if (!strcmp(av[i].a_w.w_symbol->s_name, "_semi_")) SETSEMI(&av[i]); else if (!strcmp(av[i].a_w.w_symbol->s_name, "_comma_")) SETCOMMA(&av[i]); } --- 1300,1304 ---- for (i = 0; i < ac; i++) { if (av[i].a_type == A_SYMBOL) { ! if (!strcmp(av[i].a_w.w_symbol->s_name, "_semi_")) SETSEMI(&av[i]); else if (!strcmp(av[i].a_w.w_symbol->s_name, "_comma_")) SETCOMMA(&av[i]); } *************** *** 1742,1747 **** for (i = page * ARRAYPAGESIZE; (i < (page+1)*ARRAYPAGESIZE && i < a->n); i++) { yval = *(float *)(a->vec + elemsize*i + yonset); ! sys_vgui(".%sArrayWindow.lb insert %d {%d) %g}\n", ! x->realname->s_name, i % ARRAYPAGESIZE, i, yval); } } --- 1745,1749 ---- for (i = page * ARRAYPAGESIZE; (i < (page+1)*ARRAYPAGESIZE && i < a->n); i++) { yval = *(float *)(a->vec + elemsize*i + yonset); ! sys_vgui(".%sArrayWindow.lb insert %d {%d) %g}\n", x->realname->s_name, i%ARRAYPAGESIZE, i, yval); } } *************** *** 1752,1758 **** gfxstub_deleteforkey(x); pd_unbind(&x->x_gobj.g_pd, x->realname); ! /* LATER find a way to get #A unbound earlier (at end of load?) */ ! while ((x2 = pd_findbyclass(gensym("#A"), garray_class))) ! pd_unbind(x2, gensym("#A")); pd_free(&x->scalar->sc_gobj.g_pd); } --- 1754,1759 ---- gfxstub_deleteforkey(x); pd_unbind(&x->x_gobj.g_pd, x->realname); ! /* LATER find a way to get #A unbound earlier (at end of load?) */ ! while ((x2 = pd_findbyclass(gensym("#A"), garray_class))) pd_unbind(x2, gensym("#A")); pd_free(&x->scalar->sc_gobj.g_pd); } *************** *** 1779,1784 **** /* found "w" field which controls linewidth. */ float wval = *(float *)(elem + wonset); ! wpix = canvas_ytopixels(canvas, basey + slot_cvttocoord(yslot, yval) + ! slot_cvttocoord(wslot, wval)) - ypix; if (wpix < 0) wpix = -wpix; } else wpix = 1; --- 1780,1785 ---- /* found "w" field which controls linewidth. */ float wval = *(float *)(elem + wonset); ! wpix = canvas_ytopixels(canvas, ! basey + slot_cvttocoord(yslot,yval) + slot_cvttocoord(wslot,wval)) - ypix; if (wpix < 0) wpix = -wpix; } else wpix = 1; *************** *** 1796,1805 **** t_word *wp; t_template *template; ! int npoints; ! int elemsize; ! float initx; ! float xperpix, yperpix; ! int lastx; ! int fatten; } ammo;
--- 1797,1803 ---- t_word *wp; t_template *template; ! int npoints, elemsize; ! float initx, xperpix, yperpix; ! int lastx, fatten; } ammo;
*************** *** 1820,1830 **** if (ammo.fatten) { if (i == 0) { ! float newy = ywas + dy * ammo.yperpix; ! if (newy < 0) newy = 0; slot_setcoord(ammo.yfield, ammo.template, thisword, newy, 1); } ! } else { ! slot_setcoord(ammo.yfield, ammo.template, thisword, ywas + dy*ammo.yperpix, 1); ! } } } --- 1818,1825 ---- if (ammo.fatten) { if (i == 0) { ! float newy = MAX(0,ywas+dy*ammo.yperpix); slot_setcoord(ammo.yfield, ammo.template, thisword, newy, 1); } ! } else slot_setcoord(ammo.yfield, ammo.template, thisword, ywas + dy*ammo.yperpix, 1); } } *************** *** 1832,1848 **** int thisx = ammo.initx + ammo.xcumulative + 0.5, x2; int increment, i, nchange; ! float newy = ammo.ycumulative, ! oldy = slot_getcoord(ammo.yfield, ammo.template, (t_word *)(((char *)ammo.wp) + ammo.elemsize * ammo.lastx), 1); ! float ydiff = newy - oldy; ! if (thisx < 0) thisx = 0; ! else if (thisx >= ammo.npoints) thisx = ammo.npoints - 1; ! increment = (thisx > ammo.lastx ? -1 : 1); nchange = 1 + increment * (ammo.lastx - thisx); - for (i = 0, x2 = thisx; i < nchange; i++, x2 += increment) { slot_setcoord(ammo.yfield, ammo.template, (t_word *)(((char *)ammo.wp) + ammo.elemsize * x2), newy, 1); ! if (nchange > 1) newy -= ydiff * (1./(nchange - 1)); } ammo.lastx = thisx; --- 1827,1841 ---- int thisx = ammo.initx + ammo.xcumulative + 0.5, x2; int increment, i, nchange; ! float newy = ammo.ycumulative; ! float oldy = slot_getcoord(ammo.yfield, ammo.template, (t_word *)(((char *)ammo.wp) + ammo.elemsize * ammo.lastx), 1); ! float ydiff = newy-oldy; ! CLAMP(thisx,0,1); ! increment = thisx > ammo.lastx ? -1 : 1; nchange = 1 + increment * (ammo.lastx - thisx); for (i = 0, x2 = thisx; i < nchange; i++, x2 += increment) { slot_setcoord(ammo.yfield, ammo.template, (t_word *)(((char *)ammo.wp) + ammo.elemsize * x2), newy, 1); ! if (nchange > 1) newy -= ydiff/(nchange-1); } ammo.lastx = thisx; *************** *** 1890,1899 **** }
- /* cursor definitions; used as return value for t_parentclickfn */ - #define CURSOR_RUNMODE_CLICKME 1 - #define CURSOR_RUNMODE_THICKEN 2 - #define CURSOR_RUNMODE_ADDPOINT 3 - #define CURSOR_EDITMODE_DISCONNECT 6 - static float canvas_pixelstox(t_canvas *x, float xpix); static float canvas_pixelstoy(t_canvas *x, float xpix); --- 1883,1886 ---- *************** *** 1918,1933 **** for (i = 0; i < array->n; i += incr) { float pxpix, pypix, pwpix, dx, dy; ! array_getcoordinate(canvas, array->vec + elemsize*i, xonset, yonset, wonset, i, xloc, yloc, xinc, xfield, yfield, wfield, &pxpix, &pypix, &pwpix); if (pwpix < 4) pwpix = 4; ! dx = pxpix-xpix; if (dx<0) dx=-dx; else if (dx>8) continue; ! dy = pypix-ypix; if (dy<0) dy=-dy; else if (dx+dy<best) best=dx+dy; if (wonset >= 0) { ! dy = pypix+pwpix-ypix; ! if (dy < 0) dy=-dy; ! if (dx+dy < best) best = dx+dy; ! dy = pypix-pwpix-ypix; ! if (dy < 0) dy=-dy; ! if (dx+dy < best) best = dx+dy; } } if (best > 8) { --- 1905,1916 ---- for (i = 0; i < array->n; i += incr) { float pxpix, pypix, pwpix, dx, dy; ! array_getcoordinate(canvas, &array->vec[elemsize*i], xonset, yonset, wonset, i, xloc, yloc, xinc, xfield, yfield, wfield, &pxpix, &pypix, &pwpix); if (pwpix < 4) pwpix = 4; ! dx = fabs(pxpix-xpix); if (dx>8) continue; ! dy = fabs(pypix-ypix); if (dx+dy<best) best=dx+dy; if (wonset >= 0) { ! dy = fabs(pypix+pwpix-ypix); if (dx+dy < best) best = dx+dy; ! dy = fabs(pypix-pwpix-ypix); if (dx+dy < best) best = dx+dy; } } if (best > 8) { *************** *** 1942,1950 **** xloc, yloc, xinc, xfield, yfield, wfield, &pxpix, &pypix, &pwpix); if (pwpix < 4) pwpix = 4; ! dx = pxpix-xpix; if (dx<0) dx=-dx; ! dy = pypix-ypix; if (dy<0) dy=-dy; if (wonset >= 0) { ! dy2 = pypix+pwpix-ypix; if (dy2<0) dy2=-dy2; ! dy3 = pypix-pwpix-ypix; if (dy3<0) dy3=-dy3; if (yonset < 0) dy = 100; } else dy2 = dy3 = 100; --- 1925,1933 ---- xloc, yloc, xinc, xfield, yfield, wfield, &pxpix, &pypix, &pwpix); if (pwpix < 4) pwpix = 4; ! dx = fabs(pxpix-xpix); ! dy = fabs(pypix-ypix); if (wonset >= 0) { ! dy2 = fabs(pypix+pwpix-ypix); ! dy3 = fabs(pypix-pwpix-ypix); if (yonset < 0) dy = 100; } else dy2 = dy3 = 100; *************** *** 1954,1958 **** else ammo.fatten = 1; if (doit) { ! char *elem = (char *)array->vec; ammo.elemsize = elemsize; ammo.canvas = canvas; --- 1937,1941 ---- else ammo.fatten = 1; if (doit) { ! char *elem = array->vec; ammo.elemsize = elemsize; ammo.canvas = canvas; *************** *** 1971,1975 **** /* add a point (after the clicked-on one) */ array_resize_and_redraw(array, array->n + 1); ! elem = (char *)array->vec; memmove(elem + elemsize * (i+1), elem + elemsize*i, (array->n-i-1) * elemsize); i++; --- 1954,1958 ---- /* add a point (after the clicked-on one) */ array_resize_and_redraw(array, array->n + 1); ! elem = array->vec; memmove(elem + elemsize * (i+1), elem + elemsize*i, (array->n-i-1) * elemsize); i++; *************** *** 2003,2010 **** /* canvas_grab(canvas, 0, array_motion, 0, xpix, ypix); */ } ! if (alt) { ! if (xpix < pxpix) return CURSOR_EDITMODE_DISCONNECT; ! else return CURSOR_RUNMODE_ADDPOINT; ! } else return ammo.fatten ? CURSOR_RUNMODE_THICKEN : CURSOR_RUNMODE_CLICKME; } } --- 1986,1990 ---- /* canvas_grab(canvas, 0, array_motion, 0, xpix, ypix); */ } ! return 0; } } *************** *** 2013,2018 **** }
- #define ARRAYWRITECHUNKSIZE 1000 - static void garray_save(t_gobj *z, t_binbuf *b) { int style, filestyle; --- 1993,1996 ---- *************** *** 2036,2042 **** int n = array->n, n2 = 0; while (n2 < n) { ! int chunk = n - n2, i; ! if (chunk > ARRAYWRITECHUNKSIZE) ! chunk = ARRAYWRITECHUNKSIZE; binbuf_addv(b, "si", gensym("#A"), n2); for (i = 0; i < chunk; i++) binbuf_addv(b, "f", ((float *)array->vec)[n2+i]); --- 2014,2018 ---- int n = array->n, n2 = 0; while (n2 < n) { ! int chunk = imin(n-n2,1000), i; binbuf_addv(b, "si", gensym("#A"), n2); for (i = 0; i < chunk; i++) binbuf_addv(b, "f", ((float *)array->vec)[n2+i]); *************** *** 2079,2084 **** t_array *array = garray_getarray_floatonly(x, &yonset, &elemsize); TEMPLATE_FLOATY(x,array,) ! for (i = 0; i < array->n; i++) ! *((float *)((char *)array->vec + elemsize*i) + yonset) = g; garray_redraw(x); } --- 2055,2059 ---- t_array *array = garray_getarray_floatonly(x, &yonset, &elemsize); TEMPLATE_FLOATY(x,array,) ! for (i = 0; i < array->n; i++) *((float *)(array->vec + elemsize*i) + yonset) = g; garray_redraw(x); } *************** *** 2099,2103 **** if (sineflag) for (j=0, fj=phase; j<nsin; j++, fj+=phase) sum += vsin[j] * sin(fj); else for (j=0, fj= 0; j<nsin; j++, fj+=phase) sum += vsin[j] * cos(fj); ! *((float *)((array->vec + elemsize*i)) + yonset) = sum; } garray_redraw(x); --- 2074,2078 ---- if (sineflag) for (j=0, fj=phase; j<nsin; j++, fj+=phase) sum += vsin[j] * sin(fj); else for (j=0, fj= 0; j<nsin; j++, fj+=phase) sum += vsin[j] * cos(fj); ! *((float *)(array->vec + elemsize*i) + yonset) = sum; } garray_redraw(x); *************** *** 2203,2207 **** } for (i = 0; i < nelem; i++) { ! if (!fscanf(fd, "%f", ((float *)(array->vec + elemsize*i) + yonset))) { post("%s: read %d elements into table of size %d", filename->s_name, i, nelem); break; --- 2178,2182 ---- } for (i = 0; i < nelem; i++) { ! if (!fscanf(fd, "%f", (float *)(array->vec + elemsize*i) + yonset)) { post("%s: read %d elements into table of size %d", filename->s_name, i, nelem); break; *************** *** 2920,2926 **** /* check for file type */ nline = canvas_scanbinbuf(natoms, vec, &message, &nextmsg); ! if (nline != 1 && vec[message].a_type != A_SYMBOL && ! strcmp(vec[message].a_w.w_symbol->s_name, "data")) ! { pd_error(x, "%s: file apparently of wrong type", filename); binbuf_free(b); --- 2895,2899 ---- /* check for file type */ nline = canvas_scanbinbuf(natoms, vec, &message, &nextmsg); ! if (nline!=1 && vec[message].a_type != A_SYMBOL && strcmp(vec[message].a_w.w_symbol->s_name, "data")) { pd_error(x, "%s: file apparently of wrong type", filename); binbuf_free(b); *************** *** 4308,4314 **** /* globally conform all scalars from one template to another */ void template_conform(t_template *tfrom, t_template *tto) { ! int nto = tto->n, nfrom = tfrom->n, i, j, ! *conformaction = (int *)getbytes(sizeof(int) * nto), ! *conformedfrom = (int *)getbytes(sizeof(int) * nfrom), doit = 0; for (i=0; i< nto; i++) conformaction[i] = -1; for (i=0; i<nfrom; i++) conformedfrom[i] = 0; --- 4281,4287 ---- /* globally conform all scalars from one template to another */ void template_conform(t_template *tfrom, t_template *tto) { ! int nto = tto->n, nfrom = tfrom->n, i, j, doit = 0; ! int *conformaction = (int *)getbytes(sizeof(int) * nto); ! int *conformedfrom = (int *)getbytes(sizeof(int) * nfrom); for (i=0; i< nto; i++) conformaction[i] = -1; for (i=0; i<nfrom; i++) conformedfrom[i] = 0; *************** *** 4469,4473 **** static void *gtemplate_new(t_symbol *s, int argc, t_atom *argv) { t_symbol *sym = atom_getsymbolarg(0, argc, argv); ! if (argc >= 1) argc--; argv++; return (gtemplate_donew(canvas_makebindsym(sym), argc, argv)); } --- 4442,4446 ---- static void *gtemplate_new(t_symbol *s, int argc, t_atom *argv) { t_symbol *sym = atom_getsymbolarg(0, argc, argv); ! if (argc >= 1) {argc--; argv++;} return (gtemplate_donew(canvas_makebindsym(sym), argc, argv)); } *************** *** 4481,4485 **** warned = 1; } ! return (gtemplate_donew(sym, argc, argv)); }
--- 4454,4458 ---- warned = 1; } ! return gtemplate_donew(sym, argc, argv); }
*************** *** 4552,4555 **** --- 4525,4531 ---- }
+ float MIN(float a, float b) {return a<b?a:b;} + float MAX(float a, float b) {return a>b?a:b;} + static void slot_setfloat_var(t_slot *fd, t_symbol *s) { char *s1, *s2, *s3, strbuf[MAXPDSTRING]; *************** *** 4560,4566 **** fd->min = fd->max = fd->scrmin = fd->scrmax = fd->quantum = 0; } else { ! int cpy = s1 - s->s_name, got; ! if (cpy > MAXPDSTRING-5) ! cpy = MAXPDSTRING-5; strncpy(strbuf, s->s_name, cpy); strbuf[cpy] = 0; --- 4536,4540 ---- fd->min = fd->max = fd->scrmin = fd->scrmax = fd->quantum = 0; } else { ! int cpy = MIN(s1-s->s_name,MAXPDSTRING-5), got; strncpy(strbuf, s->s_name, cpy); strbuf[cpy] = 0; *************** *** 4736,4742 **** /* -------------------- widget behavior for curve ------------ */
! static void curve_getrect(t_gobj *z, t_canvas *canvas, ! t_word *data, t_template *template, float basex, float basey, ! int *xp1, int *yp1, int *xp2, int *yp2) { t_curve *x = (t_curve *)z; int i, n = x->npoints; --- 4710,4715 ---- /* -------------------- widget behavior for curve ------------ */
! static void curve_getrect(t_gobj *z, t_canvas *canvas, t_word *data, t_template *template, ! float basex, float basey, int *xp1, int *yp1, int *xp2, int *yp2) { t_curve *x = (t_curve *)z; int i, n = x->npoints; *************** *** 4751,4780 **** int xloc = canvas_xtopixels(canvas, basex + slot_getcoord(f , template, data, 0)); int yloc = canvas_ytopixels(canvas, basey + slot_getcoord(f+1, template, data, 0)); ! if (xloc < x1) x1 = xloc; ! if (xloc > x2) x2 = xloc; ! if (yloc < y1) y1 = yloc; ! if (yloc > y2) y2 = yloc; } ! *xp1 = x1; ! *yp1 = y1; ! *xp2 = x2; ! *yp2 = y2; }
! /* 0 to 9 in 5 steps */ ! static int rangecolor(int n) { ! int n2 = n/2; /* 0 to 4 */ ! int ret = (n2 << 6); /* 0 to 256 in 5 steps */ ! if (ret > 255) ret = 255; ! return ret; ! }
static void numbertocolor(int n, char *s) { ! int red, blue, green; ! if (n < 0) n = 0; ! red = n / 100; ! blue = ((n / 10) % 10); ! green = n % 10; ! sprintf(s, "#%2.2x%2.2x%2.2x", rangecolor(red), rangecolor(blue), rangecolor(green)); }
--- 4724,4741 ---- int xloc = canvas_xtopixels(canvas, basex + slot_getcoord(f , template, data, 0)); int yloc = canvas_ytopixels(canvas, basey + slot_getcoord(f+1, template, data, 0)); ! x1=imin(x1,xloc); y1=imin(y1,yloc); ! x2=imax(x2,xloc); y2=imax(y2,yloc); } ! *xp1 = x1; *yp1 = y1; ! *xp2 = x2; *yp2 = y2; }
! /* this seems dumb */ ! //static int rangecolor(int n) {return min((n/2)<<6,255);} ! static int rangecolor(int n) {return n*9/255;}
static void numbertocolor(int n, char *s) { ! n = MAX(n,0); ! sprintf(s, "#%2.2x%2.2x%2.2x", rangecolor(n/100), rangecolor((n/10)%10), rangecolor(n%10)); }
*************** *** 4788,4798 **** if (n > 1) { int flags = x->flags; - float width = slot_getfloat(&x->width, template, data, 1); char outline[20], fill[20]; int pix[200]; if (n > 100) n = 100; ! /* calculate the pixel values before we start printing ! out the TK message so that "error" printout won't be ! interspersed with it. Only show up to 100 points so we don't have to allocate memory here. */ for (i = 0, f = x->vec; i < n; i++, f += 2) { --- 4749,4757 ---- if (n > 1) { int flags = x->flags; char outline[20], fill[20]; int pix[200]; if (n > 100) n = 100; ! /* calculate the pixel values before we start printing out the TK message so that ! "error" printout won't be interspersed with it. Only show up to 100 points so we don't have to allocate memory here. */ for (i = 0, f = x->vec; i < n; i++, f += 2) { *************** *** 4800,4804 **** pix[2*i+1] = canvas_ytopixels(canvas, basey + slot_getcoord(f+1, template, data, 1)); } - if (width < 1) width = 1; numbertocolor(slot_getfloat(&x->outlinecolor, template, data, 1), outline); if (flags & CLOSED) { --- 4759,4762 ---- *************** *** 4807,4811 **** } else sys_vgui(".x%lx.c create line\\n", (long)canvas_getcanvas(canvas)); for (i = 0; i < n; i++) sys_vgui("%d %d\\n", pix[2*i], pix[2*i+1]); ! sys_vgui("-width %f\\n", width); if (flags & CLOSED) sys_vgui("-fill %s -outline %s\\n", fill, outline); else sys_vgui("-fill %s\\n", outline); --- 4765,4769 ---- } else sys_vgui(".x%lx.c create line\\n", (long)canvas_getcanvas(canvas)); for (i = 0; i < n; i++) sys_vgui("%d %d\\n", pix[2*i], pix[2*i+1]); ! sys_vgui("-width %f\\n", MAX(slot_getfloat(&x->width, template, data, 1),1)); if (flags & CLOSED) sys_vgui("-fill %s -outline %s\\n", fill, outline); else sys_vgui("-fill %s\\n", outline); *************** *** 6248,6253 **** } t_nbx;
- t_symbol *s_empty; - typedef struct t_foo { int argc; t_atom *argv; t_binbuf *b; } t_foo; static int pd_pickle(t_foo *foo, char *fmt, ...); --- 6206,6209 ---- *************** *** 6591,6597 **** /* special case: if pd args change just pass the message on. */ if (natom1 >= 1 && natom2 >= 1 && ! vec1[0].a_type == A_SYMBOL && !strcmp(vec1[0].a_w.w_symbol->s_name, "pd") && ! vec2[0].a_type == A_SYMBOL && !strcmp(vec2[0].a_w.w_symbol->s_name, "pd")) { ! typedmess(&x->te_pd, gensym("rename"), natom2-1, vec2+1); binbuf_free(x->te_binbuf); x->te_binbuf = b; --- 6547,6553 ---- /* special case: if pd args change just pass the message on. */ if (natom1 >= 1 && natom2 >= 1 && ! vec1[0].a_type == A_SYMBOL && vec1[0].a_w.w_symbol == s_pd && ! vec2[0].a_type == A_SYMBOL && vec2[0].a_w.w_symbol == s_pd) { ! typedmess((t_pd *)x, gensym("rename"), natom2-1, vec2+1); binbuf_free(x->te_binbuf); x->te_binbuf = b; *************** *** 6987,6991 ****
static void iemgui_subclass (t_class *c) { - s_empty = gensym("empty"); class_addmethod3(c, iemgui_delta, "delta","*"); class_addmethod3(c, iemgui_pos, "pos","*"); --- 6943,6946 ---- *************** *** 7962,7965 **** --- 7917,7923 ----
void desire_setup(void) { + s_empty = gensym("empty"); + s_Pd = gensym("Pd"); + s_pd = gensym("pd"); manager_class = class_new(gensym("__manager"), (t_newmethod)manager_new, (t_method)manager_free, sizeof(t_manager), CLASS_GOBJ, A_GIMME, 0);