[PD-cvs] pd/src g_canvas.c,1.1.1.4.2.7.2.10,1.1.1.4.2.7.2.11 g_editor.c,1.1.1.4.2.3.2.12,1.1.1.4.2.3.2.13 u_object.tk,1.1.2.17,1.1.2.18 u_main.tk,1.1.1.4.2.7.4.40,1.1.1.4.2.7.4.41

Mathieu Bouchard matju at users.sourceforge.net
Sat Apr 17 06:04:30 CEST 2004


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

Modified Files:
      Tag: impd_0_37
	g_canvas.c g_editor.c u_object.tk u_main.tk 
Log Message:
updated patchcords again


Index: g_canvas.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/g_canvas.c,v
retrieving revision 1.1.1.4.2.7.2.10
retrieving revision 1.1.1.4.2.7.2.11
diff -C2 -d -r1.1.1.4.2.7.2.10 -r1.1.1.4.2.7.2.11
*** g_canvas.c	2 Apr 2004 00:16:42 -0000	1.1.1.4.2.7.2.10
--- g_canvas.c	17 Apr 2004 04:04:23 -0000	1.1.1.4.2.7.2.11
***************
*** 831,841 ****
      linetraverser_start(&t, x);
      while (oc = linetraverser_next(&t)) {
! 	int x1=t.tr_lx1, y1=t.tr_ly1;
! 	int x2=t.tr_lx2, y2=t.tr_ly2;
! 	sys_vgui("wire_draw l%x .x%x.c %d %d %d %d %d\n",
! 	    oc, glist_getcanvas(x), (outlet_getsymbol(t.tr_outlet) == &s_signal ? 2:1), x1, y1, x2, y2);
      }
  }
  
  void canvas_fixlinesfor(t_canvas *x, t_text *text)
  {
--- 831,841 ----
      linetraverser_start(&t, x);
      while (oc = linetraverser_next(&t)) {
! 	sys_vgui("wire_update l%x {%x %d %x %d %d}\n", oc, t.tr_ob, t.tr_outno, t.tr_ob2, t.tr_inno,
! 	    outlet_getsymbol(t.tr_outlet) == &s_signal);
! 	sys_vgui("wire_draw2 l%x .x%x.c\n", oc, glist_getcanvas(x));
      }
  }
  
+ 
  void canvas_fixlinesfor(t_canvas *x, t_text *text)
  {
***************
*** 844,853 ****
      linetraverser_start(&t, x);
      while (oc = linetraverser_next(&t)) {
!     	if (t.tr_ob == text || t.tr_ob2 == text) {
! 	    int x1=t.tr_lx1, y1=t.tr_ly1;
! 	    int x2=t.tr_lx2, y2=t.tr_ly2;
! 	    sys_vgui("wire_draw l%x .x%x.c %d %d %d %d %d\n",
! 		oc, glist_getcanvas(x), (outlet_getsymbol(t.tr_outlet) == &s_signal ? 2:1), x1, y1, x2, y2);
!     	}
      }
  }
--- 844,851 ----
      linetraverser_start(&t, x);
      while (oc = linetraverser_next(&t)) {
!     	if (t.tr_ob != text && t.tr_ob2 != text) continue;
! 	sys_vgui("wire_update l%x {%x %d %x %d %d}\n", oc, t.tr_ob, t.tr_outno, t.tr_ob2, t.tr_inno,
! 	    outlet_getsymbol(t.tr_outlet) == &s_signal);
! 	sys_vgui("wire_draw2 l%x .x%x.c\n", oc, glist_getcanvas(x));
      }
  }

Index: g_editor.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/g_editor.c,v
retrieving revision 1.1.1.4.2.3.2.12
retrieving revision 1.1.1.4.2.3.2.13
diff -C2 -d -r1.1.1.4.2.3.2.12 -r1.1.1.4.2.3.2.13
*** g_editor.c	8 Apr 2004 10:48:11 -0000	1.1.1.4.2.3.2.12
--- g_editor.c	17 Apr 2004 04:04:23 -0000	1.1.1.4.2.3.2.13
***************
*** 62,79 ****
  /* ------------------------ managing the selection ----------------- */
  
- void glist_selectline(t_glist *x, t_outconnect *oc, int index1,
-     int outno, int index2, int inno)
- {
-     if (x->gl_editor)
-     {
-     	glist_noselect(x);
-     	x->gl_editor->e_selectedline = 1;
- 	x->gl_editor->e_selectline_index1 = index1; x->gl_editor->e_selectline_outno = outno;
- 	x->gl_editor->e_selectline_index2 = index2; x->gl_editor->e_selectline_inno = inno;
- 	x->gl_editor->e_selectline_tag = oc;
- 	sys_vgui("wire_select l%x .x%x.c 1\n", x->gl_editor->e_selectline_tag, x);
-     }    
- }
- 
  void glist_deselectline(t_glist *x)
  {
--- 62,65 ----
***************
*** 338,342 ****
  	    sinkno == index2 && t.tr_inno == inno)
      	{
!     	    sys_vgui(".x%x.c delete l%x\n", x, oc);
      	    obj_disconnect(t.tr_ob, t.tr_outno, t.tr_ob2, t.tr_inno);
  	    break;
--- 324,328 ----
  	    sinkno == index2 && t.tr_inno == inno)
      	{
!     	    sys_vgui("wire_erase l%x .x%x.c\n", oc, x);
      	    obj_disconnect(t.tr_ob, t.tr_outno, t.tr_ob2, t.tr_inno);
  	    break;
***************
*** 897,930 ****
  }
  
  void canvas_click_on_wire(t_canvas *self, t_symbol *linesym,
  t_float x, t_float y, t_float b, t_float f) {
!     int mod = (int)f;
!     int shiftmod = mod & SHIFTMOD;
!     int runmode = (mod & CTRLMOD) || !self->gl_edit;
!     int altmod = mod & ALTMOD;
!     int rightclick = mod & RIGHTCLICK;
      post("canvas_click_on_wire: 0x%08x %s %f %f %f %f",
  		(unsigned)self, linesym->s_name, x, y, b, f);
      /*post("shiftmod=%d runmode=%d altmod=%d rightclick=%d b=%f f=%f",shiftmod,runmode,altmod,rightclick,b,f);*/
!     if (!runmode && !altmod && !shiftmod && !rightclick) {
      	t_outconnect *oc;
  	int obj1,port1,obj2,port2;
  	post("canvas_click_on_wire: selecting this one...");
      	canvas_find_wire(self,linesym,&oc,&obj1,&port1,&obj2,&port2);
!     	glist_selectline(glist_getcanvas(self),oc,obj1,port1,obj2,port2);
!     }
  }
  
  void canvas_click_on_object(t_canvas *self, t_symbol *linesym,
  t_float x, t_float y, t_float b, t_float f) {
!     int mod = (int)f;
!     int shiftmod = mod & SHIFTMOD;
!     int runmode = (mod & CTRLMOD) || !self->gl_edit;
!     int altmod = mod & ALTMOD;
!     int rightclick = mod & RIGHTCLICK;
      post("canvas_click_on_object: 0x%08x %s %f %f %f %f",
  		(unsigned)self, linesym->s_name, x, y, b, f);
!     /*post("shiftmod=%d runmode=%d altmod=%d rightclick=%d b=%f f=%f",shiftmod,runmode,altmod,rightclick,b,f);*/
!     if (!runmode && !altmod && !shiftmod && !rightclick) {
      }
  }
--- 883,932 ----
  }
  
+ void canvas_modifiers(t_canvas *self, int f, int doit, int *run, int *shift, int *alt, int *rightclick) {
+     int mod = (int)f;
+     *run = (mod & CTRLMOD) || !self->gl_edit;
+     *shift = mod & SHIFTMOD;
+     *alt = mod & ALTMOD;
+     *rightclick = mod & RIGHTCLICK;
+ #ifdef SIMULATERIGHTCLICK
+     if (doit && !runmode && xpos == canvas_upx && ypos == canvas_upy &&
+     	sys_getrealtime() - canvas_upclicktime < DCLICKINTERVAL)
+ 	    *rightclick = 1;
+ #endif
+ }
+ 
  void canvas_click_on_wire(t_canvas *self, t_symbol *linesym,
  t_float x, t_float y, t_float b, t_float f) {
!     int run, shift, alt, rightclick;
!     canvas_modifiers(self,f,0,&run,&shift,&alt,&rightclick);
      post("canvas_click_on_wire: 0x%08x %s %f %f %f %f",
  		(unsigned)self, linesym->s_name, x, y, b, f);
      /*post("shiftmod=%d runmode=%d altmod=%d rightclick=%d b=%f f=%f",shiftmod,runmode,altmod,rightclick,b,f);*/
!     if (!run && !alt && !shift && !rightclick) {
! 	/* change selection to single wire */
      	t_outconnect *oc;
+ 	t_canvas *c = glist_getcanvas(self);
+ 	t_editor *e = c->gl_editor;
  	int obj1,port1,obj2,port2;
  	post("canvas_click_on_wire: selecting this one...");
      	canvas_find_wire(self,linesym,&oc,&obj1,&port1,&obj2,&port2);
! 	if (!e) {bug("canvas_click_on_wire: no editor?"); return;}
!     	glist_noselect(c);
!     	e->e_selectedline = 1;
! 	e->e_selectline_index1 = obj1; e->e_selectline_outno = port1;
! 	e->e_selectline_index2 = obj2; e->e_selectline_inno  = port2;
! 	e->e_selectline_tag = oc;
! 	sys_vgui("wire_select l%x .x%x.c 1\n", e->e_selectline_tag, self);
!     }    
  }
  
  void canvas_click_on_object(t_canvas *self, t_symbol *linesym,
  t_float x, t_float y, t_float b, t_float f) {
!     int run, shift, alt, rightclick;
!     canvas_modifiers(self,f,0,&run,&shift,&alt,&rightclick);
      post("canvas_click_on_object: 0x%08x %s %f %f %f %f",
  		(unsigned)self, linesym->s_name, x, y, b, f);
!     /*post("shift=%d run=%d alt=%d rightclick=%d b=%f f=%f",shift,run,alt,rightclick,b,f);*/
!     if (!run && !alt && !shift && !rightclick) {
      }
  }
***************
*** 934,975 ****
      int mod, int doit)
  {
!     int shiftmod = mod & SHIFTMOD;
!     int runmode = (mod & CTRLMOD) || !x->gl_edit;
!     int altmod = mod & ALTMOD;
!     int rightclick = mod & RIGHTCLICK;
      int x1, y1, x2, y2, clickreturned = 0;
      t_gobj *y;
!     if (!x->gl_editor) {bug("editor"); return;}
      
      canvas_undo_already_set_move = 0;
  
      /* if keyboard was grabbed, notify grabber and cancel the grab */
!     if (doit && x->gl_editor->e_grab && x->gl_editor->e_keyfn)
      {
!     	(* x->gl_editor->e_keyfn) (x->gl_editor->e_grab, 0);
      	glist_grab(x, 0, 0, 0, 0, 0);
      }
  
! #ifdef SIMULATERIGHTCLICK
!     if (doit && !runmode && xpos == canvas_upx && ypos == canvas_upy &&
!     	sys_getrealtime() - canvas_upclicktime < DCLICKINTERVAL)
! 	    rightclick = 1;
! #endif
!     	
!     x->gl_editor->e_lastmoved = 0;
      if (doit)
      {
!     	x->gl_editor->e_grab = 0;
!     	x->gl_editor->e_onmotion = MA_NONE;
      }
      /* post("click %d %d %d %d", xpos, ypos, which, mod); */
      
!     if (x->gl_editor->e_onmotion != MA_NONE)
      	return;
  
!     x->gl_editor->e_xwas = xpos;
!     x->gl_editor->e_ywas = ypos;
  
!     if (runmode && !rightclick)
      {
      	for (y = x->gl_list; y; y = y->g_next)
--- 936,970 ----
      int mod, int doit)
  {
!     int run, shift, alt, rightclick;
!     canvas_modifiers(x,mod,doit,&run,&shift,&alt,&rightclick);
      int x1, y1, x2, y2, clickreturned = 0;
      t_gobj *y;
!     t_editor *e = x->gl_editor;
!     if (!e) {bug("editor"); return;}
      
      canvas_undo_already_set_move = 0;
  
      /* if keyboard was grabbed, notify grabber and cancel the grab */
!     if (doit && e->e_grab && e->e_keyfn)
      {
!     	e->e_keyfn(e->e_grab, 0);
      	glist_grab(x, 0, 0, 0, 0, 0);
      }
  
!     e->e_lastmoved = 0;
      if (doit)
      {
!     	e->e_grab = 0;
!     	e->e_onmotion = MA_NONE;
      }
      /* post("click %d %d %d %d", xpos, ypos, which, mod); */
      
!     if (e->e_onmotion != MA_NONE)
      	return;
  
!     e->e_xwas = xpos;
!     e->e_ywas = ypos;
  
!     if (run && !rightclick)
      {
      	for (y = x->gl_list; y; y = y->g_next)
***************
*** 977,982 ****
  	    	/* check if the object wants to be clicked */
      	    if (canvas_hitbox(x, y, xpos, ypos, &x1, &y1, &x2, &y2)
! 	    	&& (clickreturned = gobj_click(y, x, xpos, ypos,
! 		    shiftmod, altmod, 0, doit)))
      	    	    	break;
  	}
--- 972,976 ----
  	    	/* check if the object wants to be clicked */
      	    if (canvas_hitbox(x, y, xpos, ypos, &x1, &y1, &x2, &y2)
! 	    	&& (clickreturned = gobj_click(y,x,xpos,ypos,shift,alt,0,doit)))
      	    	    	break;
  	}
***************
*** 984,1009 ****
  	return;
      }
!     sys_vgui(".x%x.c delete x\n",x);		  
  
!     	/* if not a runmode left click, fall here. */
      if (y = canvas_findhitbox(x, xpos, ypos, &x1, &y1, &x2, &y2))
      {
      	t_object *ob = pd_checkobject(&y->g_pd);
!     	    /* check you're in the rectangle */
      	ob = pd_checkobject(&y->g_pd);
      	if (rightclick)
  	    canvas_rightclick(x, xpos, ypos, y);
!     	else if (shiftmod)
      	{
      	    if (doit)
      	    {
  		t_rtext *rt;
! 		if (ob && (rt = x->gl_editor->e_textedfor) &&
  		    rt == glist_findrtext(x, ob))
      	    	{
  		    rtext_mouse(rt, xpos - x1, ypos - y1, RTEXT_SHIFT);
! 		    x->gl_editor->e_onmotion = MA_DRAGTEXT;
! 		    x->gl_editor->e_xwas = x1;
! 		    x->gl_editor->e_ywas = y1;
      	    	}
  		else
--- 978,1003 ----
  	return;
      }
!     sys_vgui(".x%x.c delete x\n",x);
  
!     /* if not a runmode left click, fall here. */
      if (y = canvas_findhitbox(x, xpos, ypos, &x1, &y1, &x2, &y2))
      {
      	t_object *ob = pd_checkobject(&y->g_pd);
!     	/* check you're in the rectangle */
      	ob = pd_checkobject(&y->g_pd);
      	if (rightclick)
  	    canvas_rightclick(x, xpos, ypos, y);
!     	else if (shift)
      	{
      	    if (doit)
      	    {
  		t_rtext *rt;
! 		if (ob && (rt = e->e_textedfor) &&
  		    rt == glist_findrtext(x, ob))
      	    	{
  		    rtext_mouse(rt, xpos - x1, ypos - y1, RTEXT_SHIFT);
! 		    e->e_onmotion = MA_DRAGTEXT;
! 		    e->e_xwas = x1;
! 		    e->e_ywas = y1;
      	    	}
  		else
***************
*** 1029,1036 ****
      	    	    if (doit)
      	    	    {
! 		    	int issignal = obj_issignaloutlet(ob, closest);
!     	    	    	x->gl_editor->e_onmotion = MA_CONNECT;
!     	    	    	x->gl_editor->e_xwas = xpos;
!     	    	    	x->gl_editor->e_ywas = ypos;
      	    	    }    	    	    	    	
      	    	    else canvas_setcursor(x, CURSOR_EDITMODE_CONNECT);
--- 1023,1029 ----
      	    	    if (doit)
      	    	    {
!     	    	    	e->e_onmotion = MA_CONNECT;
!     	    	    	e->e_xwas = xpos;
!     	    	    	e->e_ywas = ypos;
      	    	    }    	    	    	    	
      	    	    else canvas_setcursor(x, CURSOR_EDITMODE_CONNECT);
***************
*** 1055,1065 ****
  		    /* check if the box is being text edited */
  	    nooutletafterall:
! 		if (ob && (rt = x->gl_editor->e_textedfor) &&
  		    rt == glist_findrtext(x, ob))
      	    	{
  		    rtext_mouse(rt, xpos - x1, ypos - y1, RTEXT_DOWN);
! 		    x->gl_editor->e_onmotion = MA_DRAGTEXT;
! 		    x->gl_editor->e_xwas = x1;
! 		    x->gl_editor->e_ywas = y1;
  		}
      	    	else
--- 1048,1058 ----
  		    /* check if the box is being text edited */
  	    nooutletafterall:
! 		if (ob && (rt = e->e_textedfor) &&
  		    rt == glist_findrtext(x, ob))
      	    	{
  		    rtext_mouse(rt, xpos - x1, ypos - y1, RTEXT_DOWN);
! 		    e->e_onmotion = MA_DRAGTEXT;
! 		    e->e_xwas = x1;
! 		    e->e_ywas = y1;
  		}
      	    	else
***************
*** 1071,1075 ****
      	    		glist_select(x, y);
      	    	    }
! 		    x->gl_editor->e_onmotion = MA_MOVE;
  		}
  	    }
--- 1064,1068 ----
      	    		glist_select(x, y);
      	    	    }
! 		    e->e_onmotion = MA_MOVE;
  		}
  	    }
***************
*** 1083,1096 ****
      /* if not an editing action, and if we didn't hit a
    	box, set cursor and return */
!     if (runmode || rightclick) {canvas_setcursor(x, CURSOR_RUNMODE_NOTHING); return;}
      canvas_setcursor(x, CURSOR_EDITMODE_NOTHING);
      if (doit)
      {
! 	if (!shiftmod) glist_noselect(x);
      	sys_vgui(".x%x.c create rectangle %d %d %d %d -tags x\n",
      	      x, xpos, ypos, xpos, ypos);
! 	x->gl_editor->e_xwas = xpos;
! 	x->gl_editor->e_ywas = ypos;
!     	x->gl_editor->e_onmotion = MA_REGION;
      }
  }
--- 1076,1089 ----
      /* if not an editing action, and if we didn't hit a
    	box, set cursor and return */
!     if (run || rightclick) {canvas_setcursor(x, CURSOR_RUNMODE_NOTHING); return;}
      canvas_setcursor(x, CURSOR_EDITMODE_NOTHING);
      if (doit)
      {
! 	if (!shift) glist_noselect(x);
      	sys_vgui(".x%x.c create rectangle %d %d %d %d -tags x\n",
      	      x, xpos, ypos, xpos, ypos);
! 	e->e_xwas = xpos;
! 	e->e_ywas = ypos;
!     	e->e_onmotion = MA_REGION;
      }
  }
***************
*** 1121,1128 ****
      int xwas = x->gl_editor->e_xwas,
      	ywas = x->gl_editor->e_ywas;
- /*    if (doit) sys_vgui(".x%x.c delete x\n", x);
-     else sys_vgui("wire_draw x .x%x.c 1 %d %d %d %d\n",
-     	    x, x->gl_editor->e_xwas, x->gl_editor->e_ywas, xpos, ypos);
- */
      y1 = canvas_findhitbox(x, xwas, ywas, &x11, &y11, &x12, &y12);
      y2 = canvas_findhitbox(x, xpos, ypos, &x21, &y21, &x22, &y22);
--- 1114,1117 ----
***************
*** 1170,1182 ****
      	    if (doit)
      	    {
-     	    	int lx1 = x11 + (noutlet1>1 ?
-    	    		((x12-x11-IOWIDTH)*closest1)/(noutlet1-1) : 0) + IOMIDDLE;
-     	    	int lx2 = x21 + ( ninlet2>1 ?
-    	    		((x22-x21-IOWIDTH)*closest2)/ (ninlet2-1) : 0) + IOMIDDLE;
      	    	oc = obj_connect(ob1, closest1, ob2, closest2);
!     	    	sys_vgui("wire_draw l%x .x%x.c %d %d %d %d %d\n",
! 		    oc, glist_getcanvas(x), (obj_issignaloutlet(ob1, closest1) ? 2 : 1),
! 		    	lx1, y12,
! 			lx2, y21);
  		canvas_setundo(x, canvas_undo_connect,
  		    canvas_undo_set_connect(x, 
--- 1159,1166 ----
      	    if (doit)
      	    {
      	    	oc = obj_connect(ob1, closest1, ob2, closest2);
! 		sys_vgui("wire_update l%x {%x %d %x %d %d}\n", oc, y1, closest1, y2, closest2,
! 		    obj_issignaloutlet(ob1, closest1));
! 		sys_vgui("wire_draw2 l%x .x%x.c\n", oc, glist_getcanvas(x));
  		canvas_setundo(x, canvas_undo_connect,
  		    canvas_undo_set_connect(x, 
***************
*** 1210,1229 ****
  static void canvas_doregion(t_canvas *x, int xpos, int ypos, int doit)
  {
      if (doit)
      {
      	int lox, loy, hix, hiy;
!     	if (x->gl_editor->e_xwas < xpos)
!     	    lox = x->gl_editor->e_xwas, hix = xpos;
!     	else hix = x->gl_editor->e_xwas, lox = xpos;
!     	if (x->gl_editor->e_ywas < ypos)
!     	    loy = x->gl_editor->e_ywas, hiy = ypos;
!     	else hiy = x->gl_editor->e_ywas, loy = ypos;
  	canvas_selectinrect(x, lox, loy, hix, hiy);
      	sys_vgui(".x%x.c delete x\n", x);
!     	x->gl_editor->e_onmotion = 0;
      }
      else sys_vgui(".x%x.c coords x %d %d %d %d\n",
!     	    x, x->gl_editor->e_xwas,
!     	    	x->gl_editor->e_ywas, xpos, ypos);
  }
  
--- 1194,1213 ----
  static void canvas_doregion(t_canvas *x, int xpos, int ypos, int doit)
  {
+     t_editor *e = x->gl_editor;
      if (doit)
      {
      	int lox, loy, hix, hiy;
!     	if (e->e_xwas < xpos)
!     	    lox = e->e_xwas, hix = xpos;
!     	else hix = e->e_xwas, lox = xpos;
!     	if (e->e_ywas < ypos)
!     	    loy = e->e_ywas, hiy = ypos;
!     	else hiy = e->e_ywas, loy = ypos;
  	canvas_selectinrect(x, lox, loy, hix, hiy);
      	sys_vgui(".x%x.c delete x\n", x);
!     	e->e_onmotion = 0;
      }
      else sys_vgui(".x%x.c coords x %d %d %d %d\n",
!     	    x, e->e_xwas, e->e_ywas, xpos, ypos);
  }
  
***************
*** 1828,1838 ****
      	    goto bad;
      if (!(oc = obj_connect(objsrc, outno, objsink, inno))) goto bad;
!     if (glist_isvisible(x))
!     {
!     	sys_vgui(".x%x.c create line %d %d %d %d -width %d -tags l%x\n",
! 	    glist_getcanvas(x), 0, 0, 0, 0,
! 	    (obj_issignaloutlet(objsrc, outno) ? 2 : 1),oc);
! 	canvas_fixlinesfor(x, objsrc);
!     }
      return;
  
--- 1812,1816 ----
      	    goto bad;
      if (!(oc = obj_connect(objsrc, outno, objsink, inno))) goto bad;
!     if (glist_isvisible(x)) canvas_fixlinesfor(x, objsrc);
      return;
  

Index: u_main.tk
===================================================================
RCS file: /cvsroot/pure-data/pd/src/u_main.tk,v
retrieving revision 1.1.1.4.2.7.4.40
retrieving revision 1.1.1.4.2.7.4.41
diff -C2 -d -r1.1.1.4.2.7.4.40 -r1.1.1.4.2.7.4.41
*** u_main.tk	11 Apr 2004 05:16:40 -0000	1.1.1.4.2.7.4.40
--- u_main.tk	17 Apr 2004 04:04:23 -0000	1.1.1.4.2.7.4.41
***************
*** 28,32 ****
  #option add *activeForeground #ffffff
  
! proc l+ {al bl} {set r {}; foreach a $al b $bl {lappend r [expr $a+$b]}; return $r}
  
  proc lreverse {list} {
--- 28,35 ----
  #option add *activeForeground #ffffff
  
! proc l+  {al bl} {set r {}; foreach a $al b $bl {lappend r [expr $a+$b]}; return $r}
! proc l-  {al bl} {set r {}; foreach a $al b $bl {lappend r [expr $a-$b]}; return $r}
! proc l/2 {al   } {set r {}; foreach a $al       {lappend r [expr $a/2 ]}; return $r}
! #proc lmap ...
  
  proc lreverse {list} {

Index: u_object.tk
===================================================================
RCS file: /cvsroot/pure-data/pd/src/Attic/u_object.tk,v
retrieving revision 1.1.2.17
retrieving revision 1.1.2.18
diff -C2 -d -r1.1.2.17 -r1.1.2.18
*** u_object.tk	8 Apr 2004 10:48:12 -0000	1.1.2.17
--- u_object.tk	17 Apr 2004 04:04:23 -0000	1.1.2.18
***************
*** 70,73 ****
--- 70,79 ----
  }
  
+ proc wire_update {self d} {
+ 	global _
+ 	foreach [list _($self:obj1) _($self:port1) _($self:obj2) _($self:port2)] \
+ 		[lrange $d 0 3] {}
+ }
+ 
  proc object_xy {self canvas} {
  	global _
***************
*** 109,112 ****
--- 115,129 ----
  }
  
+ proc wire_draw2 {self canvas} {
+ 	global _
+ 	set bbox1 [$canvas bbox $_($self:obj1)o$_($self:port1)]
+ 	set bbox2 [$canvas bbox $_($self:obj2)i$_($self:port2)]
+ 	if {[llength $bbox1] < 4} {puts stderr "wire_draw2: crap ($_($self:obj1) outlet)"; return}
+ 	if {[llength $bbox2] < 4} {puts stderr "wire_draw2: crap ($_($self:obj2) inlet)";  return}
+ 	foreach {x1 y1} [l/2 [l+ [lrange $bbox1 0 1] [lrange $bbox1 2 3]]] {}
+ 	foreach {x2 y2} [l/2 [l+ [lrange $bbox2 0 1] [lrange $bbox2 2 3]]] {}
+ 	wire_draw $self $canvas 1 $x1 $y1 $x2 $y2
+ }
+ 
  proc wire_select {self canvas flag} {
  	if {$flag} {set colour #0000ff} {set colour #8888cc}





More information about the Pd-cvs mailing list