[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [16634] trunk/blender/source/blender: simple changes for bez point selection.

Campbell Barton ideasman42 at gmail.com
Sat Sep 20 15:21:12 CEST 2008


Revision: 16634
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=16634
Author:   campbellbarton
Date:     2008-09-20 15:21:10 +0200 (Sat, 20 Sep 2008)

Log Message:
-----------
simple changes for bez point selection. use as a flag incase other flags are stored in bezt->f1,2,3

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/curve.c
    trunk/blender/source/blender/include/blendef.h
    trunk/blender/source/blender/src/drawipo.c
    trunk/blender/source/blender/src/editcurve.c
    trunk/blender/source/blender/src/editipo.c
    trunk/blender/source/blender/src/editipo_mods.c
    trunk/blender/source/blender/src/retopo.c

Modified: trunk/blender/source/blender/blenkernel/intern/curve.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/curve.c	2008-09-20 13:18:19 UTC (rev 16633)
+++ trunk/blender/source/blender/blenkernel/intern/curve.c	2008-09-20 13:21:10 UTC (rev 16634)
@@ -1519,7 +1519,7 @@
 					bevp->y= bp->vec[1];
 					bevp->z= bp->vec[2];
 					bevp->alfa= bp->alfa;
-					bevp->f1= 1;
+					bevp->f1= SELECT;
 					bevp++;
 					bp++;
 				}
@@ -1579,11 +1579,11 @@
 						
 						/* indicate with handlecodes double points */
 						if(prevbezt->h1==prevbezt->h2) {
-							if(prevbezt->h1==0 || prevbezt->h1==HD_VECT) bevp->f1= 1;
+							if(prevbezt->h1==0 || prevbezt->h1==HD_VECT) bevp->f1= SELECT;
 						}
 						else {
-							if(prevbezt->h1==0 || prevbezt->h1==HD_VECT) bevp->f1= 1;
-							else if(prevbezt->h2==0 || prevbezt->h2==HD_VECT) bevp->f1= 1;
+							if(prevbezt->h1==0 || prevbezt->h1==HD_VECT) bevp->f1= SELECT;
+							else if(prevbezt->h2==0 || prevbezt->h2==HD_VECT) bevp->f1= SELECT;
 						}
 						
 						v1= data;
@@ -2385,9 +2385,9 @@
 				bezt= nu->bezt;
 				a= nu->pntsu;
 				while(a--) {
-					if(bezt->f1 || bezt->f3) {
-						if(bezt->f1) bezt->h1= code;
-						if(bezt->f3) bezt->h2= code;
+					if((bezt->f1 & SELECT) || (bezt->f3 & SELECT)) {
+						if(bezt->f1 & SELECT) bezt->h1= code;
+						if(bezt->f3 & SELECT) bezt->h2= code;
 						if(bezt->h1!=bezt->h2) {
 							if ELEM(bezt->h1, HD_ALIGN, HD_AUTO) bezt->h1= HD_FREE;
 							if ELEM(bezt->h2, HD_ALIGN, HD_AUTO) bezt->h2= HD_FREE;
@@ -2415,8 +2415,8 @@
 					bezt= nu->bezt;
 					a= nu->pntsu;
 					while(a--) {
-						if(bezt->f1 && bezt->h1) ok= 1;
-						if(bezt->f3 && bezt->h2) ok= 1;
+						if((bezt->f1 & SELECT) && bezt->h1) ok= 1;
+						if((bezt->f3 & SELECT) && bezt->h2) ok= 1;
 						if(ok) break;
 						bezt++;
 					}
@@ -2432,8 +2432,8 @@
 				bezt= nu->bezt;
 				a= nu->pntsu;
 				while(a--) {
-					if(bezt->f1) bezt->h1= ok;
-					if(bezt->f3 ) bezt->h2= ok;
+					if(bezt->f1 & SELECT) bezt->h1= ok;
+					if(bezt->f3 & SELECT) bezt->h2= ok;
 	
 					bezt++;
 				}

Modified: trunk/blender/source/blender/include/blendef.h
===================================================================
--- trunk/blender/source/blender/include/blendef.h	2008-09-20 13:18:19 UTC (rev 16633)
+++ trunk/blender/source/blender/include/blendef.h	2008-09-20 13:21:10 UTC (rev 16634)
@@ -128,6 +128,10 @@
 /* for curve objects in editmode that can have hidden handles - may use for IPO's later */
 #define BEZSELECTED_HIDDENHANDLES(bezt)   ((G.f & G_HIDDENHANDLES) ? (bezt)->f2 & SELECT : BEZSELECTED(bezt))
 
+#define BEZ_SEL(bezt)		{ (bezt)->f1 |=  SELECT; (bezt)->f2 |=  SELECT; (bezt)->f3 |=  SELECT; }
+#define BEZ_DESEL(bezt)		{ (bezt)->f1 &= ~SELECT; (bezt)->f2 &= ~SELECT; (bezt)->f3 &= ~SELECT; }
+#define BEZ_INVSEL(bezt)	{ (bezt)->f1 ^=  SELECT; (bezt)->f2 ^=  SELECT; (bezt)->f3 ^=  SELECT; }
+
 /* psfont */
 #define FNT_PDRAW 1
 #define FNT_HAEBERLI 2

Modified: trunk/blender/source/blender/src/drawipo.c
===================================================================
--- trunk/blender/source/blender/src/drawipo.c	2008-09-20 13:18:19 UTC (rev 16633)
+++ trunk/blender/source/blender/src/drawipo.c	2008-09-20 13:21:10 UTC (rev 16634)
@@ -1315,7 +1315,7 @@
 						glVertex2fv(fp+3); glVertex2fv(fp+6); 
 						glEnd();
 					}
-					else if( (bezt->f1 & 1)==sel) {
+					else if( (bezt->f1 & SELECT)==sel) {
 						fp= bezt->vec[0];
 						cpack(col[bezt->h1]);
 						

Modified: trunk/blender/source/blender/src/editcurve.c
===================================================================
--- trunk/blender/source/blender/src/editcurve.c	2008-09-20 13:18:19 UTC (rev 16633)
+++ trunk/blender/source/blender/src/editcurve.c	2008-09-20 13:21:10 UTC (rev 16634)
@@ -262,7 +262,7 @@
 {
 	char str[30];
 
-	if (bp && (bp->f1&1)) {
+	if (bp && (bp->f1 & SELECT)) {
 		sprintf(str,"%2.2f", bp->vec[3]);
 
 		cpack(0x737373);
@@ -2916,12 +2916,12 @@
 	if((nu->type & 7)==CU_BEZIER) {
 		/* which bezpoint? */
 		if(bezt== nu->bezt) {   /* first */
-			bezt->f1= bezt->f2= bezt->f3= 0;
+			BEZ_DESEL(bezt);
 			newbezt =
 				(BezTriple*)MEM_callocN((nu->pntsu+1) * sizeof(BezTriple), "addvert_Nurb");
 			memcpy(newbezt+1, bezt, nu->pntsu*sizeof(BezTriple));
 			*newbezt= *bezt;
-			newbezt->f1= newbezt->f2= newbezt->f3= SELECT;
+			BEZ_SEL(newbezt);
 			if(newbezt->h1 >= 0) newbezt->h2= newbezt->h1;
 			else newbezt->h2= newbezt->h1= HD_ALIGN; /* does this ever happen? */
 			VECCOPY(temp, bezt->vec[1]);
@@ -2930,7 +2930,7 @@
 			bezt= newbezt+1;
 		}
 		else if(bezt== (nu->bezt+nu->pntsu-1)) {  /* last */
-			bezt->f1= bezt->f2= bezt->f3= 0;
+			BEZ_DESEL(bezt);
 			newbezt =
 				(BezTriple*)MEM_callocN((nu->pntsu+1) * sizeof(BezTriple), "addvert_Nurb");
 			memcpy(newbezt, nu->bezt, nu->pntsu*sizeof(BezTriple));
@@ -2939,7 +2939,7 @@
 			MEM_freeN(nu->bezt);
 			nu->bezt= newbezt;
 			newbezt+= nu->pntsu;
-			newbezt->f1= newbezt->f2= newbezt->f3= SELECT;
+			BEZ_SEL(newbezt);
 			if(newbezt->h1 >= 0) newbezt->h2= newbezt->h1;
 			else newbezt->h2= newbezt->h1= HD_ALIGN; /* does this ever happen? */
 			bezt= nu->bezt+nu->pntsu-1;

Modified: trunk/blender/source/blender/src/editipo.c
===================================================================
--- trunk/blender/source/blender/src/editipo.c	2008-09-20 13:18:19 UTC (rev 16633)
+++ trunk/blender/source/blender/src/editipo.c	2008-09-20 13:21:10 UTC (rev 16634)
@@ -1318,14 +1318,10 @@
 			for(a=0; a<G.sipo->totipo; a++) {
 				if(ik->data[a]) {
 					if(ik->flag & 1) {
-						ik->data[a]->f1 |= SELECT;
-						ik->data[a]->f2 |= SELECT;
-						ik->data[a]->f3 |= SELECT;
+						BEZ_SEL(ik->data[a]);
 					}
 					else {
-						ik->data[a]->f1 &= ~SELECT;
-						ik->data[a]->f2 &= ~SELECT;
-						ik->data[a]->f3 &= ~SELECT;
+						BEZ_DESEL(ik->data[a]);
 					}
 				}
 			}
@@ -1423,7 +1419,7 @@
 					if(ei->disptype!=IPO_DISPBITS && ei->icu->ipo==IPO_BEZ) {
 						/* middle points get an advantage */
 						temp= -3+abs(mval[0]- sco[0][0])+ abs(mval[1]- sco[0][1]);
-						if( bezt1->f1 & 1) temp+=5;
+						if( bezt1->f1 & SELECT) temp+=5;
 						if(temp<dist) { 
 							hpoint= 0; 
 							*bezt= bezt1; 
@@ -1514,18 +1510,18 @@
 			if(bezt) {
 				if(hand==1) {
 					if(BEZSELECTED(bezt)) {
-						bezt->f1= bezt->f2= bezt->f3= 0;
+						BEZ_DESEL(bezt);
 					}
 					else {
-						bezt->f1= bezt->f2= bezt->f3= SELECT;
+						BEZ_SEL(bezt);
 					}
 				}
 				else if(hand==0) {
-					if(bezt->f1 & SELECT) bezt->f1= 0;
+					if(bezt->f1 & SELECT) bezt->f1 &= ~SELECT;
 					else bezt->f1= SELECT;
 				}
 				else {
-					if(bezt->f3 & SELECT) bezt->f3= 0;
+					if(bezt->f3 & SELECT) bezt->f3 &= ~SELECT;
 					else bezt->f3= SELECT;
 				}
 			}				
@@ -1535,7 +1531,7 @@
 			
 			if(bezt) {
 				if(hand==1) {
-					bezt->f1|= SELECT; bezt->f2|= SELECT; bezt->f3|= SELECT;
+					BEZ_SEL(bezt);
 				}
 				else if(hand==0) bezt->f1 |= SELECT;
 				else bezt->f3 |= SELECT;
@@ -2261,7 +2257,7 @@
 					while(b--) {
 						*beztn= *bezt;
 						if(bezt->f2 & SELECT) {
-							beztn->f1= beztn->f2= beztn->f3= 0;
+							BEZ_DESEL(beztn);
 							beztn++;
 							*beztn= *bezt;
 						}
@@ -3474,14 +3470,10 @@
 			if(ik->data[a]) {
 				bezt= ik->data[a];
 				if(sel) {
-					bezt->f1 |= SELECT;
-					bezt->f2 |= SELECT;
-					bezt->f3 |= SELECT;
+					BEZ_SEL(bezt);
 				}
 				else {
-					bezt->f1 &= ~SELECT;
-					bezt->f2 &= ~SELECT;
-					bezt->f3 &= ~SELECT;
+					BEZ_DESEL(bezt);
 				}
 			}
 		}
@@ -4645,7 +4637,7 @@
 	for (icu=ipo->curve.first; icu; icu=icu->next){
 		for (i=0; i<icu->totvert; i++){
 			/* If a key is selected */
-			if (icu->bezt[i].f2 & 1){
+			if (icu->bezt[i].f2 & SELECT){
 				/* Expand the list */
 				newbezt = MEM_callocN(sizeof(BezTriple) * (icu->totvert+1), "beztriple");
 				memcpy (newbezt, icu->bezt, sizeof(BezTriple) * (i+1));
@@ -4655,15 +4647,10 @@
 				MEM_freeN (icu->bezt);
 				icu->bezt=newbezt;
 				/* Unselect the current key*/
-				icu->bezt[i].f1 &= ~ 1;
-				icu->bezt[i].f2 &= ~ 1;
-				icu->bezt[i].f3 &= ~ 1;
+				BEZ_DESEL(&icu->bezt[i]);
 				i++;
 				/* Select the copied key */
-				icu->bezt[i].f1 |= 1;
-				icu->bezt[i].f2 |= 1;
-				icu->bezt[i].f3 |= 1;
-				
+				BEZ_SEL(&icu->bezt[i]);
 			}
 		}
 	}

Modified: trunk/blender/source/blender/src/editipo_mods.c
===================================================================
--- trunk/blender/source/blender/src/editipo_mods.c	2008-09-20 13:18:19 UTC (rev 16633)
+++ trunk/blender/source/blender/src/editipo_mods.c	2008-09-20 13:21:10 UTC (rev 16634)
@@ -136,10 +136,10 @@
 					b= ei->icu->totvert;
 					while(b--) {
 						if(totipo_vertsel) {
-							bezt->f1= bezt->f2= bezt->f3= 0;
+							BEZ_DESEL(bezt);
 						}
 						else {
-							bezt->f1= bezt->f2= bezt->f3= SELECT;
+							BEZ_SEL(bezt);
 						}
 						bezt++;
 					}
@@ -228,7 +228,7 @@
 					bezt= ei->icu->bezt;
 					b= ei->icu->totvert;
 					while(b--) {
-						bezt->f1= bezt->f2= bezt->f3= 0;
+						BEZ_SEL(bezt);
 						bezt++;
 					}
 				}
@@ -374,18 +374,14 @@
 int select_bezier_add(BezTriple *bezt) 
 {
 	/* Select the bezier triple */
-	bezt->f1 |= SELECT;
-	bezt->f2 |= SELECT;
-	bezt->f3 |= SELECT;
+	BEZ_SEL(bezt);
 	return 0;
 }
 
 int select_bezier_subtract(BezTriple *bezt) 
 {
 	/* Deselect the bezier triple */
-	bezt->f1 &= ~SELECT;
-	bezt->f2 &= ~SELECT;
-	bezt->f3 &= ~SELECT;
+	BEZ_DESEL(bezt);
 	return 0;
 }
 
@@ -412,9 +408,9 @@
 	/* is a handle selected? If so
 	 * set it to type auto
 	 */
-	if(bezt->f1 || bezt->f3) {
-		if(bezt->f1) bezt->h1= 1; /* the secret code for auto */
-		if(bezt->f3) bezt->h2= 1;
+	if((bezt->f1  & SELECT) || (bezt->f3 & SELECT)) {
+		if(bezt->f1 & SELECT) bezt->h1= 1; /* the secret code for auto */
+		if(bezt->f3 & SELECT) bezt->h2= 1;
 
 		/* if the handles are not of the same type, set them
 		 * to type free
@@ -435,9 +431,9 @@
 	/* is a handle selected? If so
 	 * set it to type vector
 	 */
-	if(bezt->f1 || bezt->f3) {
-		if(bezt->f1) bezt->h1= 2; /* the code for vector */
-		if(bezt->f3) bezt->h2= 2;
+	if((bezt->f1 & SELECT) || (bezt->f3 & SELECT)) {
+		if(bezt->f1 & SELECT) bezt->h1= 2; /* the code for vector */
+		if(bezt->f3 & SELECT) bezt->h2= 2;
     
 		/* if the handles are not of the same type, set them
 		 * to type free
@@ -455,8 +451,8 @@
 	/* queries whether the handle should be set
 	 * to type 'free' (I think)
 	 */
-	if(bezt->f1 && bezt->h1) return 1;

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list