[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [12548] trunk/blender/source/blender: added buttons in the Transform Properties for changing curve handle types, (Similar to how Metaballs can be selected) for easier access then H, Shift H, V keys

Campbell Barton ideasman42 at gmail.com
Sat Nov 10 16:31:41 CET 2007


Revision: 12548
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=12548
Author:   campbellbarton
Date:     2007-11-10 16:31:41 +0100 (Sat, 10 Nov 2007)

Log Message:
-----------
added buttons in the Transform Properties for changing curve handle types, (Similar to how Metaballs can be selected) for easier access then H,Shift H, V keys

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/curve.c
    trunk/blender/source/blender/include/butspace.h
    trunk/blender/source/blender/src/buttons_editing.c
    trunk/blender/source/blender/src/drawview.c

Modified: trunk/blender/source/blender/blenkernel/intern/curve.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/curve.c	2007-11-10 11:45:25 UTC (rev 12547)
+++ trunk/blender/source/blender/blenkernel/intern/curve.c	2007-11-10 15:31:41 UTC (rev 12548)
@@ -2351,6 +2351,8 @@
 	/* code==2: set vectorhandle */
 	/* code==3 (HD_ALIGN) it toggle, vectorhandles become HD_FREE */
 	/* code==4: sets icu flag to become IPO_AUTO_HORIZ, horizontal extremes on auto-handles */
+	/* code==5: Set align, like 3 but no toggle */
+	/* code==6: Clear align, like 3 but no toggle */
 	Nurb *nu;
 	BezTriple *bezt;
 	short a, ok=0;
@@ -2381,22 +2383,28 @@
 		/* there is 1 handle not FREE: FREE it all, else make ALIGNED  */
 		
 		nu= editNurb.first;
-		while(nu) {
-			if( (nu->type & 7)==1) {
-				bezt= nu->bezt;
-				a= nu->pntsu;
-				while(a--) {
-					if(bezt->f1 && bezt->h1) ok= 1;
-					if(bezt->f3 && bezt->h2) ok= 1;
-					if(ok) break;
-					bezt++;
+		if (code == 5) {
+			ok = HD_ALIGN;
+		} else if (code == 6) {
+			ok = HD_FREE;
+		} else {
+			/* Toggle */
+			while(nu) {
+				if( (nu->type & 7)==1) {
+					bezt= nu->bezt;
+					a= nu->pntsu;
+					while(a--) {
+						if(bezt->f1 && bezt->h1) ok= 1;
+						if(bezt->f3 && bezt->h2) ok= 1;
+						if(ok) break;
+						bezt++;
+					}
 				}
+				nu= nu->next;
 			}
-			nu= nu->next;
+			if(ok) ok= HD_FREE;
+			else ok= HD_ALIGN;
 		}
-		if(ok) ok= HD_FREE;
-		else ok= HD_ALIGN;
-		
 		nu= editNurb.first;
 		while(nu) {
 			if( (nu->type & 7)==1) {

Modified: trunk/blender/source/blender/include/butspace.h
===================================================================
--- trunk/blender/source/blender/include/butspace.h	2007-11-10 11:45:25 UTC (rev 12547)
+++ trunk/blender/source/blender/include/butspace.h	2007-11-10 15:31:41 UTC (rev 12548)
@@ -455,6 +455,10 @@
 #define B_SETW4			2122
 #define B_SUBSURFTYPE		2123
 #define B_TILTINTERP		2124
+#define B_SETPT_AUTO	2125
+#define B_SETPT_VECTOR	2126
+#define B_SETPT_ALIGN	2127
+#define B_SETPT_FREE	2128
 
 /* *********************** */
 #define B_FONTBUTS		2300

Modified: trunk/blender/source/blender/src/buttons_editing.c
===================================================================
--- trunk/blender/source/blender/src/buttons_editing.c	2007-11-10 11:45:25 UTC (rev 12547)
+++ trunk/blender/source/blender/src/buttons_editing.c	2007-11-10 15:31:41 UTC (rev 12548)
@@ -2919,6 +2919,40 @@
 		allqueue(REDRAWINFO, 1); 	/* 1, because header->win==0! */
 
 		break;
+	
+	/* Buttons for aligning handles */
+	case B_SETPT_AUTO:
+		if(ob->type==OB_CURVE) {
+			sethandlesNurb(1);
+			BIF_undo_push("Auto Curve Handles");
+			DAG_object_flush_update(G.scene, ob, OB_RECALC_DATA);
+			allqueue(REDRAWVIEW3D, 0);
+		}
+		break;
+	case B_SETPT_VECTOR:
+		if(ob->type==OB_CURVE) {
+			sethandlesNurb(2);
+			BIF_undo_push("Vector Curve Handles");
+			DAG_object_flush_update(G.scene, ob, OB_RECALC_DATA);
+			allqueue(REDRAWVIEW3D, 0);
+		}
+		break;
+	case B_SETPT_ALIGN:
+		if(ob->type==OB_CURVE) {
+			sethandlesNurb(5);
+			BIF_undo_push("Align Curve Handles");
+			DAG_object_flush_update(G.scene, ob, OB_RECALC_DATA);
+			allqueue(REDRAWVIEW3D, 0);
+		}
+		break;
+	case B_SETPT_FREE:
+		if(ob->type==OB_CURVE) {
+			sethandlesNurb(6);
+			BIF_undo_push("Free Align Curve Handles");
+			DAG_object_flush_update(G.scene, ob, OB_RECALC_DATA);
+			allqueue(REDRAWVIEW3D, 0);
+		}
+		break;
 	}
 }
 

Modified: trunk/blender/source/blender/src/drawview.c
===================================================================
--- trunk/blender/source/blender/src/drawview.c	2007-11-10 11:45:25 UTC (rev 12547)
+++ trunk/blender/source/blender/src/drawview.c	2007-11-10 15:31:41 UTC (rev 12548)
@@ -1697,7 +1697,6 @@
 		Mat4MulVecfl(ob->obmat, median);
 	
 	if(block) {	// buttons
-	
 		uiBlockBeginAlign(block);
 		if((ob->parent) && (ob->partype == PARBONE)) {
 			uiDefButBitS(block, TOG, V3D_GLOBAL_STATS, REDRAWVIEW3D, "Global",		160, 135, 70, 19, &G.vd->flag, 0, 0, 0, 0, "Displays global values");
@@ -1742,6 +1741,15 @@
 				uiDefButF(block, NUM, B_OBJECTPANELMEDIAN, "Weight:",	10, 20, 290, 19, &(tfp->ve_median[4]), 0.0, 1.0, 10, 3, "Weight is used for SoftBody Goal");
 		}
 		
+		if(ob->type==OB_CURVE && (totw==0)) { /* bez curves have no w */
+			uiBlockBeginAlign(block);
+			uiDefBut(block, BUT,B_SETPT_AUTO,"Auto",	10, 44, 72, 19, 0, 0, 0, 0, 0, "Auto handles (Shift H)");
+			uiDefBut(block, BUT,B_SETPT_VECTOR,"Vector",82, 44, 73, 19, 0, 0, 0, 0, 0, "Vector handles (V)");
+			uiDefBut(block, BUT,B_SETPT_ALIGN,"Align",155, 44, 73, 19, 0, 0, 0, 0, 0, "Align handles (H Toggles)");
+			uiDefBut(block, BUT,B_SETPT_FREE,"Free",	227, 44, 72, 19, 0, 0, 0, 0, 0, "Align handles (H Toggles)");
+			uiBlockEndAlign(block);
+		}
+		
 		if(totedge==1)
 			uiDefButF(block, NUM, B_OBJECTPANELMEDIAN, "Crease W:",	10, 30, 290, 19, &(tfp->ve_median[3]), 0.0, 1.0, 10, 3, "");
 		else if(totedge>1)





More information about the Bf-blender-cvs mailing list