[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [29925] branches/nurbs25/source/blender/ editors/curve/editcurve.c: Fixes for extrude operator:

Sergey Sharybin g.ulairi at gmail.com
Sun Jul 4 13:38:42 CEST 2010


Revision: 29925
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=29925
Author:   nazgul
Date:     2010-07-04 13:38:42 +0200 (Sun, 04 Jul 2010)

Log Message:
-----------
Fixes for extrude operator:
- Fixed error after mergng shape keys: invalid source was passing
  to ED_curve_bpcpy
- Minor core formation: identation in extrudeflagNurb cunfused me
- Deselect all only if extrudeflagNurb will succeess

Modified Paths:
--------------
    branches/nurbs25/source/blender/editors/curve/editcurve.c

Modified: branches/nurbs25/source/blender/editors/curve/editcurve.c
===================================================================
--- branches/nurbs25/source/blender/editors/curve/editcurve.c	2010-07-04 11:08:49 UTC (rev 29924)
+++ branches/nurbs25/source/blender/editors/curve/editcurve.c	2010-07-04 11:38:42 UTC (rev 29925)
@@ -1576,28 +1576,28 @@
 
 			if( isNurbselUV(nu, &u, &v, flag) ) {
 
-				/* deselect all */
-				bp= nu->bp;
-				a= nu->pntsu*nu->pntsv;
-				while(a--) {
-					select_bpoint(bp, DESELECT, flag, HIDDEN);
-					bp++;
-				}
+				if(u==0 || u== nu->pntsv-1) {	    /* row in u-direction selected */
+					/* deselect all */
+					bp= nu->bp;
+					a= nu->pntsu*nu->pntsv;
+					while(a--) {
+						select_bpoint(bp, DESELECT, flag, HIDDEN);
+						bp++;
+					}
 
-				if(u==0 || u== nu->pntsv-1) {	    /* row in u-direction selected */
-				if (nu->pntsv == 1)
-					nu->orderv = 2;
+					if (nu->pntsv == 1) nu->orderv = 2;
 					ok= 1;
-				shift = u == 0? 1: 0;
-				NRB_setLength(nu->pntsu, nu->pntsv + 1, 0, shift, 1, nu->nurbanaPtr );
-				bp = newbp = nu->bp;
-				
+
+					shift = u == 0? 1: 0;
+					NRB_setLength(nu->pntsu, nu->pntsv + 1, 0, shift, 1, nu->nurbanaPtr );
+					bp = newbp = nu->bp;
+
 					if(u==0) {
-					ED_curve_bpcpy(editnurb, newbp, nu->bp + nu-> pntsu, nu->pntsu);
-				} else {
+						ED_curve_bpcpy(editnurb, newbp, nu->bp + nu-> pntsu, nu->pntsu);
+					} else {
 						len= nu->pntsv*nu->pntsu;
-						ED_curve_bpcpy(editnurb, newbp+len, nu->bp + nu-> pntsu, nu->pntsu);
-					bp += len;
+						ED_curve_bpcpy(editnurb, newbp+len, nu->bp+len-nu-> pntsu, nu->pntsu);
+						bp += len;
 					}
 
 					a= nu->pntsu;
@@ -1605,37 +1605,50 @@
 						select_bpoint(bp, SELECT, flag, HIDDEN);
 						bp++;
 					}
-				nu->pntsv++;
 
-				setExtrudedKnot(nu->knotsv, nu->pntsv, nu->orderv, !shift);
-				// resize nurbana's buffers
-				NRB_SizeChanged(nu->nurbanaPtr,nu->pntsu,nu->pntsv);
+					nu->pntsv++;
+
+					setExtrudedKnot(nu->knotsv, nu->pntsv, nu->orderv, !shift);
+					// resize nurbana's buffers
+					NRB_SizeChanged(nu->nurbanaPtr,nu->pntsu,nu->pntsv);
 				}
 				else if(v==0 || v== nu->pntsu-1) {	    /* collumn in v-direction selected */
+					/* deselect all */
+					bp= nu->bp;
+					a= nu->pntsu*nu->pntsv;
+					while(a--) {
+						select_bpoint(bp, DESELECT, flag, HIDDEN);
+						bp++;
+					}
+
 					ok= 1;
-				shift = v == 0? 1: 0;
-				NRB_setLength(nu->pntsu + 1, nu->pntsv, shift, 0, 1, nu->nurbanaPtr );
-				if (v == 0) {
-					bpn = nu->bp;
-					bp = bpn + shift;
-				} else {
-					bpn = nu->bp + nu->pntsu;
-					bp = bpn - 1; 
-				}
 
-				nu->pntsu++;
+					shift = v == 0? 1: 0;
+					NRB_setLength(nu->pntsu + 1, nu->pntsv, shift, 0, 1, nu->nurbanaPtr );
+					if (v == 0) {
+						bpn = nu->bp;
+						bp = bpn + shift;
+					} else {
+						bpn = nu->bp + nu->pntsu;
+						bp = bpn - 1;
+					}
 
+					nu->pntsu++;
+
 					for(a=0; a<nu->pntsv; a++) {
 							*bpn= *bp;
 							bpn->f1 |= flag;
 						bp+= nu->pntsu;
 						bpn+= nu->pntsu;
-				}
+					}
+
 				setExtrudedKnot(nu->knotsu, nu->pntsu, nu->orderu, !shift);
+
 				// resize nurbana's buffers
 				NRB_SizeChanged(nu->nurbanaPtr, nu->pntsu, nu->pntsv);
 			}
 		}
+
 		nu= nu->next;
 	}
 





More information about the Bf-blender-cvs mailing list