[PD-cvs] pd/src desire.c,1.1.2.217.2.49,1.1.2.217.2.50

Mathieu Bouchard matju at users.sourceforge.net
Fri Dec 8 21:41:34 CET 2006


Update of /cvsroot/pure-data/pd/src
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31410

Modified Files:
      Tag: desiredata
	desire.c 
Log Message:
0.40: rest of the "data structures" stuff ([struct])


Index: desire.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/Attic/desire.c,v
retrieving revision 1.1.2.217.2.49
retrieving revision 1.1.2.217.2.50
diff -C2 -d -r1.1.2.217.2.49 -r1.1.2.217.2.50
*** desire.c	8 Dec 2006 17:03:18 -0000	1.1.2.217.2.49
--- desire.c	8 Dec 2006 20:41:29 -0000	1.1.2.217.2.50
***************
*** 1226,1233 ****
      if (!flag && x->isgraph) {
          x->isgraph = 0;
!     } else if (flag && !x->isgraph) {
          if (x->pixwidth  <= 0) x->pixwidth  = CANVAS_DEFGRAPHWIDTH;
          if (x->pixheight <= 0) x->pixheight = CANVAS_DEFGRAPHHEIGHT;
          SET(isgraph,1);
          if (!nogoprect && !x->goprect) {
              canvas_each(g,x) if (pd_checkobject(g)) {SET(goprect,1); break;}
--- 1226,1234 ----
      if (!flag && x->isgraph) {
          x->isgraph = 0;
!     } else if (flag) {
          if (x->pixwidth  <= 0) x->pixwidth  = CANVAS_DEFGRAPHWIDTH;
          if (x->pixheight <= 0) x->pixheight = CANVAS_DEFGRAPHHEIGHT;
          SET(isgraph,1);
+ 	SET(hidetext,!!(flag&2));
          if (!nogoprect && !x->goprect) {
              canvas_each(g,x) if (pd_checkobject(g)) {SET(goprect,1); break;}
***************
*** 1242,1246 ****
      float xperpix, yperpix, x1, y1, x2, y2, xpix, ypix, xmargin, ymargin;
      int graphme;
!     pd_scanargs(argc,argv,"ffbffffffff",&xperpix,&yperpix,&graphme,
  	&x1,&y1,&x2,&y2,&xpix,&ypix,&xmargin,&ymargin);
      SET(pixwidth,(int)xpix);    SET(pixheight,(int)ypix);
--- 1243,1247 ----
      float xperpix, yperpix, x1, y1, x2, y2, xpix, ypix, xmargin, ymargin;
      int graphme;
!     pd_scanargs(argc,argv,"ffiffffffff",&xperpix,&yperpix,&graphme,
  	&x1,&y1,&x2,&y2,&xpix,&ypix,&xmargin,&ymargin);
      SET(pixwidth,(int)xpix);    SET(pixheight,(int)ypix);
***************
*** 3722,3725 ****
--- 3723,3727 ----
  
  static void gpointer_setcanvas(t_gpointer *gp, t_canvas *canvas, t_scalar *x);
+ static void gpointer_setarray(t_gpointer *gp, t_array *array, t_word *w);
  
  /* make a new scalar and add to the canvas.  We create a "gp" here which
***************
*** 3901,3905 ****
      t_canvas *owner;
      t_symbol *sym;
!     t_gtemplate *x_next;
      int argc;
      t_atom *argv;
--- 3903,3907 ----
      t_canvas *owner;
      t_symbol *sym;
!     t_gtemplate *next;
      int argc;
      t_atom *argv;
***************
*** 3953,3957 ****
          } else {
              pd_error(x, "%s: no such type", newtypesym->s_name);
!             return 0;
          }
          newn = (oldn = x->n) + 1;
--- 3955,3959 ----
          } else {
              pd_error(x, "%s: no such type", newtypesym->s_name);
!             goto bad;
          }
          newn = (oldn = x->n) + 1;
***************
*** 4227,4231 ****
                  template_conform(x, y);
                  pd_free(x);
!                 template_new(templatesym, argc, argv);
              }
          }
--- 4229,4234 ----
                  template_conform(x, y);
                  pd_free(x);
!                 t_template *y2 = template_new(templatesym, argc, argv);
!                 y2->t_list = 0;
              }
          }
***************
*** 4239,4242 ****
--- 4242,4246 ----
      if (*x->sym->s_name) pd_unbind(x,x->sym);
      t_freebytes(x->vec, x->n * sizeof(*x->vec));
+ 
  }
  
***************
*** 4253,4257 ****
      t_template *t = template_findbyname(sym);
      x->owner = canvas_getcurrent();
!     x->x_next = 0;
      x->sym = sym;
      x->argc = argc;
--- 4257,4261 ----
      t_template *t = template_findbyname(sym);
      x->owner = canvas_getcurrent();
!     x->next = 0;
      x->sym = sym;
      x->argc = argc;
***************
*** 4266,4271 ****
          if (t->t_list) {
              t_gtemplate *x2, *x3;
!             for (x2 = x->t->t_list; (x3 = x2->x_next); x2 = x3) {}
!             x2->x_next = x;
              post("template %s: warning: already exists.", sym->s_name);
          } else {
--- 4270,4275 ----
          if (t->t_list) {
              t_gtemplate *x2, *x3;
!             for (x2 = x->t->t_list; (x3 = x2->next); x2 = x3) {}
!             x2->next = x;
              post("template %s: warning: already exists.", sym->s_name);
          } else {
***************
*** 4317,4335 ****
      if (x == t->t_list) {
          canvas_redrawallfortemplate(t, 2);
!         if (x->x_next) {
              /* if we were first on the list, and there are others on
                 the list, make a new template corresponding to the new
!                first-on-list and replace teh existing template with it. */
!             t_template *z = template_new(&s_, x->argc, x->argv);
              template_conform(t, z);
              pd_free(t);
              pd_free(z);
!             z = template_new(x->sym, x->argc, x->argv);
!             z->t_list = x->x_next;
          } else t->t_list = 0;
          canvas_redrawallfortemplate(t, 1);
      } else {
          t_gtemplate *x2, *x3;
!         for (x2=t->t_list; (x3=x2->x_next); x2=x3) if (x==x3) {x2->x_next=x3->x_next; break;}
      }
      freebytes(x->argv, sizeof(t_atom) * x->argc);
--- 4321,4340 ----
      if (x == t->t_list) {
          canvas_redrawallfortemplate(t, 2);
!         if (x->next) {
              /* if we were first on the list, and there are others on
                 the list, make a new template corresponding to the new
!                first-on-list and replace the existing template with it. */
!             t_template *z = template_new(&s_, x->next->argc, x->next->argv);
              template_conform(t, z);
              pd_free(t);
              pd_free(z);
!             z = template_new(x->sym, x->next->argc, x->next->argv);
!             z->t_list = x->next;
!             for (t_gtemplate *y=z->t_list; y ; y=y->next) y->t=z;
          } else t->t_list = 0;
          canvas_redrawallfortemplate(t, 1);
      } else {
          t_gtemplate *x2, *x3;
!         for (x2=t->t_list; (x3=x2->next); x2=x3) if (x==x3) {x2->next=x3->next; break;}
      }
      freebytes(x->argv, sizeof(t_atom) * x->argc);
***************
*** 4398,4401 ****
--- 4403,4407 ----
  #define CLOSED 1
  #define BEZ 2
+ #define NOMOUSE 4
  #define A_ARRAY 55      /* LATER decide whether to enshrine this in m_pd.h */
  
***************
*** 4486,4490 ****
  /* includes polygons too */
  struct t_curve : t_object {
!     int flags; /* CLOSED and/or BEZ */
      t_slot fillcolor, outlinecolor, width, vis;
      int npoints;
--- 4492,4496 ----
  /* includes polygons too */
  struct t_curve : t_object {
!     int flags; /* CLOSED and/or BEZ and/or NOMOUSE */
      t_slot fillcolor, outlinecolor, width, vis;
      int npoints;
***************
*** 4504,4510 ****
          flags |= CLOSED;
      } else classname += 4;
-     if (classname[0] == 'c') flags |= BEZ;
-     x->flags = flags;
      slot_setfloat_const(&x->vis, 1);
      while (1) {
          t_symbol *firstarg = atom_getsymbolarg(0, argc, argv);
--- 4510,4515 ----
          flags |= CLOSED;
      } else classname += 4;
      slot_setfloat_const(&x->vis, 1);
+     if (classname[0] == 'c') flags |= BEZ;
      while (1) {
          t_symbol *firstarg = atom_getsymbolarg(0, argc, argv);
***************
*** 4512,4517 ****
--- 4517,4527 ----
              slot_setfloatarg(&x->vis, 1, argv+1);
              argc -= 2; argv += 2;
+         } else
+ 	if (!strcmp(firstarg->s_name, "-x")) {
+ 	    flags |= NOMOUSE;
+ 	    argc -= 1; argv += 1;
          } else break;
      }
+     x->flags = flags;
      if (flags&CLOSED&&argc) slot_setfloatarg(   &x->fillcolor, argc--,argv++);
      else                    slot_setfloat_const(&x->fillcolor, 0);
***************
*** 4546,4550 ****
      t_slot *f = x->vec;
      int x1 = 0x7fffffff, x2 = -0x7fffffff, y1 = 0x7fffffff, y2 = -0x7fffffff;
!     if (!slot_getfloat(&x->vis, t, data, 0)) {
          *xp1 = *yp1 = 0x7fffffff;
          *xp2 = *yp2 = -0x7fffffff;
--- 4556,4560 ----
      t_slot *f = x->vec;
      int x1 = 0x7fffffff, x2 = -0x7fffffff, y1 = 0x7fffffff, y2 = -0x7fffffff;
!     if (x->flags&NOMOUSE || !slot_getfloat(&x->vis, t, data, 0)) {
          *xp1 = *yp1 = 0x7fffffff;
          *xp2 = *yp2 = -0x7fffffff;
***************
*** 4613,4616 ****
--- 4623,4628 ----
    t_word *wp;
    t_template *t;
+   t_gpointer gpointer;
+ 
  } cm;
  
***************
*** 4622,4631 ****
      t_curve *x = (t_curve *)z;
      t_slot *f = x->vec + cm.field;
      cm.xcumulative += dx;
      cm.ycumulative += dy;
      if (f[0].var && dx!=0) slot_setcoord(f,   cm.t, cm.wp, cm.xbase + cm.xcumulative*cm.xper, 1);
      if (f[1].var && dy!=0) slot_setcoord(f+1, cm.t, cm.wp, cm.ybase + cm.ycumulative*cm.yper, 1);
!     if (cm.scalar) scalar_redraw(cm.scalar, cm.canvas);
!     if (cm.array)   array_redraw(cm.array,  cm.canvas);
  }
  #endif
--- 4634,4646 ----
      t_curve *x = (t_curve *)z;
      t_slot *f = x->vec + cm.field;
+     t_atom at;
+     if (!gpointer_check(&curve_motion_gpointer, 0)) {post("curve_motion: scalar disappeared"); return;}
      cm.xcumulative += dx;
      cm.ycumulative += dy;
      if (f[0].var && dx!=0) slot_setcoord(f,   cm.t, cm.wp, cm.xbase + cm.xcumulative*cm.xper, 1);
      if (f[1].var && dy!=0) slot_setcoord(f+1, cm.t, cm.wp, cm.ybase + cm.ycumulative*cm.yper, 1);
!     /* LATER figure out what to do to notify for an array? */
!     if (cm.scalar) template_notifyforscalar(cm.t, cm.canvas, cm.scalar, gensym("change"), 1, &at);
!     if (cm.scalar) gobj_changed(cm.scalar,0); else gobj_changed(cm.array,0);
  }
  #endif
***************
*** 4666,4669 ****
--- 4681,4686 ----
          cm.field = 2*bestn;
          cm.t = t;
+         if (cm.scalar) gpointer_setcanvas(&cm.gpointer, cm.canvas, cm.scalar);
+         else gpointer_setarray(&cm.gpointer, cm.array, cm.wp);
          /* canvas_grab(canvas, z, curve_motion, 0, xpix, ypix); */
      }
***************
*** 5160,5167 ****
      t_drawnumber *x = (t_drawnumber *)z;
      t_slot *f = &x->value;
      dn.ycumulative -= dy;
      template_setfloat(dn.t, f->u.varsym, dn.wp, dn.ycumulative, 1);
!     if (dn.scalar) scalar_redraw(dn.scalar, dn.canvas);
!     if (dn.array)   array_redraw(dn.array,  dn.canvas);
  }
  #endif
--- 5177,5186 ----
      t_drawnumber *x = (t_drawnumber *)z;
      t_slot *f = &x->value;
+     t_atom at;
+     if (!gpointer_check(&dn.gpointer, 0)) {post("drawnumber_motion: scalar disappeared"); return;}
+     if (dn.symbol) {post("drawnumber_motion: symbol"); return;}
      dn.ycumulative -= dy;
      template_setfloat(dn.t, f->u.varsym, dn.wp, dn.ycumulative, 1);
!     if (dn.scalar) gobj_changed(dn.scalar); else gobj_changed(dn.array);
  }
  #endif
***************
*** 5205,5210 ****
          template_setfloat(dn.t, f->u.varsym, dn.wp, newf, 1);
          if (dn.scalar) template_notifyforscalar(dn.t, dn.canvas, dn.scalar, gensym("change"), 1, &at);
!         if (dn.scalar) scalar_redraw(dn.scalar, dn.canvas);
!         if (dn.array)  array_redraw(dn.array, dn.canvas);
      }
  }
--- 5224,5228 ----
          template_setfloat(dn.t, f->u.varsym, dn.wp, newf, 1);
          if (dn.scalar) template_notifyforscalar(dn.t, dn.canvas, dn.scalar, gensym("change"), 1, &at);
!         if (dn.scalar) gobj_changed(dn.scalar,0); else gobj_changed(dn.array,0);
      }
  }
***************
*** 5222,5227 ****
              dn.scalar = sc;
              dn.array = ap;
              dn.ycumulative = slot_getfloat(&x->value, t, data, 0);
!             /* canvas_grab(canvas, z, drawnumber_motion, 0, xpix, ypix); */
          }
          return 1;
--- 5240,5250 ----
              dn.scalar = sc;
              dn.array = ap;
+             dn.firstkey = 1;
              dn.ycumulative = slot_getfloat(&x->value, t, data, 0);
!             dn.symbol = (x->flags & DRAW_SYMBOL)!=0;
!             if (dn.scalar)
!                 gpointer_setcanvas(&dn.gpointer, dn.canvas, dn.scalar);
!             else gpointer_setarray(&dn.gpointer, dn.array, dn.wp);
!            /* canvas_grab(glist, z, drawnumber_motion, drawnumber_key, xpix, ypix); */
          }
          return 1;





More information about the Pd-cvs mailing list