Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/src/editcurve.c')
-rw-r--r--source/blender/src/editcurve.c123
1 files changed, 55 insertions, 68 deletions
diff --git a/source/blender/src/editcurve.c b/source/blender/src/editcurve.c
index 358e6332d6d..25110a971e4 100644
--- a/source/blender/src/editcurve.c
+++ b/source/blender/src/editcurve.c
@@ -158,7 +158,7 @@ static short select_bpoint(BPoint *bp, short selstatus, short flag, short hidden
static short swap_selection_beztriple(BezTriple *bezt)
{
- if(bezt->f2 & 1)
+ if(bezt->f2 & SELECT)
return select_beztriple(bezt, DESELECT, 1, VISIBLE);
else
return select_beztriple(bezt, SELECT, 1, VISIBLE);
@@ -166,7 +166,7 @@ static short swap_selection_beztriple(BezTriple *bezt)
static short swap_selection_bpoint(BPoint *bp)
{
- if(bp->f1 & 1)
+ if(bp->f1 & SELECT)
return select_bpoint(bp, DESELECT, 1, VISIBLE);
else
return select_bpoint(bp, SELECT, 1, VISIBLE);
@@ -182,7 +182,7 @@ short isNurbsel(Nurb *nu)
bezt= nu->bezt;
a= nu->pntsu;
while(a--) {
- if( (bezt->f1 & 1) || (bezt->f2 & 1) || (bezt->f3 & 1) ) return 1;
+ if( (bezt->f1 & SELECT) || (bezt->f2 & SELECT) || (bezt->f3 & SELECT) ) return 1;
bezt++;
}
}
@@ -190,7 +190,7 @@ short isNurbsel(Nurb *nu)
bp= nu->bp;
a= nu->pntsu*nu->pntsv;
while(a--) {
- if( (bp->f1 & 1) ) return 1;
+ if( (bp->f1 & SELECT) ) return 1;
bp++;
}
}
@@ -207,7 +207,7 @@ int isNurbsel_count(Nurb *nu)
bezt= nu->bezt;
a= nu->pntsu;
while(a--) {
- if( (bezt->f1 & 1) || (bezt->f2 & 1) || (bezt->f3 & 1) ) sel++;
+ if( (bezt->f1 & SELECT) || (bezt->f2 & SELECT) || (bezt->f3 & SELECT) ) sel++;
bezt++;
}
}
@@ -215,7 +215,7 @@ int isNurbsel_count(Nurb *nu)
bp= nu->bp;
a= nu->pntsu*nu->pntsv;
while(a--) {
- if( (bp->f1 & 1) ) sel++;
+ if( (bp->f1 & SELECT) ) sel++;
bp++;
}
}
@@ -1319,9 +1319,9 @@ static void select_adjacent_cp(short next, short cont, short selstatus)
while(a--) {
if(a-abs(next) < 0) break;
sel= 0;
- if((lastsel==0) && (bezt->hide==0) && ((bezt->f2 & 1) || (selstatus==0))) {
+ if((lastsel==0) && (bezt->hide==0) && ((bezt->f2 & SELECT) || (selstatus==0))) {
bezt+=next;
- if(!(bezt->f2 & 1) || (selstatus==0)) {
+ if(!(bezt->f2 & SELECT) || (selstatus==0)) {
sel= select_beztriple(bezt, selstatus, 1, VISIBLE);
if((sel==1) && (cont==0)) lastsel= 1;
}
@@ -1372,9 +1372,9 @@ static short nurb_has_selected_cps()
bezt= nu->bezt;
while(a--) {
if(bezt->hide==0) {
- if((bezt->f1 & 1)
- || (bezt->f2 & 1)
- || (bezt->f3 & 1)) return 1;
+ if((bezt->f1 & SELECT)
+ || (bezt->f2 & SELECT)
+ || (bezt->f3 & SELECT)) return 1;
}
bezt++;
}
@@ -1383,7 +1383,7 @@ static short nurb_has_selected_cps()
a= nu->pntsu*nu->pntsv;
bp= nu->bp;
while(a--) {
- if((bp->hide==0) && (bp->f1 & 1)) return 1;
+ if((bp->hide==0) && (bp->f1 & SELECT)) return 1;
bp++;
}
}
@@ -1428,7 +1428,7 @@ void hideNurb(int swap)
a= nu->pntsu;
sel= 0;
while(a--) {
- if(BEZSELECTED(bezt)) {
+ if(BEZSELECTED_HIDDENHANDLES(bezt)) {
select_beztriple(bezt, DESELECT, 1, HIDDEN);
bezt->hide= 1;
}
@@ -1520,12 +1520,11 @@ void selectswapNurb()
a= nu->pntsu;
while(a--) {
if(bezt->hide==0) {
- if(bezt->f1 & 1) bezt->f1 &= ~1;
- else bezt->f1 |= 1;
- if(bezt->f2 & 1) bezt->f2 &= ~1;
- else bezt->f2 |= 1;
- if(bezt->f3 & 1) bezt->f3 &= ~1;
- else bezt->f3 |= 1;
+ bezt->f2 ^= SELECT; /* always do the center point */
+ if ((G.f & G_HIDDENHANDLES)==0) {
+ bezt->f1 ^= SELECT;
+ bezt->f3 ^= SELECT;
+ }
}
bezt++;
}
@@ -1584,7 +1583,7 @@ void subdivideNurb()
bezt= prevbezt+1;
}
while(a--) {
- if( BEZSELECTED(prevbezt) && BEZSELECTED(bezt) ) amount++;
+ if( BEZSELECTED_HIDDENHANDLES(prevbezt) && BEZSELECTED_HIDDENHANDLES(bezt) ) amount++;
prevbezt= bezt;
bezt++;
}
@@ -1608,7 +1607,7 @@ void subdivideNurb()
memcpy(beztn, prevbezt, sizeof(BezTriple));
beztn++;
- if( BEZSELECTED(prevbezt) && BEZSELECTED(bezt) ) {
+ if( BEZSELECTED_HIDDENHANDLES(prevbezt) && BEZSELECTED_HIDDENHANDLES(bezt) ) {
memcpy(beztn, bezt, sizeof(BezTriple));
/* midpoint subdividing */
@@ -2000,7 +1999,7 @@ static void findselectedNurbvert(Nurb **nu, BezTriple **bezt, BPoint **bp)
bezt1= nu1->bezt;
a= nu1->pntsu;
while(a--) {
- if( (bezt1->f1 & 1) || (bezt1->f2 & 1) || (bezt1->f3 & 1) ) {
+ if( (bezt1->f1 & SELECT) || (bezt1->f2 & SELECT) || (bezt1->f3 & SELECT) ) {
if(*nu!=0 && *nu!= nu1) {
*nu= 0;
*bp= 0;
@@ -2535,23 +2534,23 @@ void addsegment_nurb()
if( (nu->type & 7)==CU_BEZIER ) {
bezt= nu->bezt;
if(nu1==0) {
- if( BEZSELECTED(bezt) ) nu1= nu;
+ if( BEZSELECTED_HIDDENHANDLES(bezt) ) nu1= nu;
else {
bezt= bezt+(nu->pntsu-1);
- if( BEZSELECTED(bezt) ) {
+ if( BEZSELECTED_HIDDENHANDLES(bezt) ) {
nu1= nu;
switchdirectionNurb(nu);
}
}
}
else if(nu2==0) {
- if( BEZSELECTED(bezt) ) {
+ if( BEZSELECTED_HIDDENHANDLES(bezt) ) {
nu2= nu;
switchdirectionNurb(nu);
}
else {
bezt= bezt+(nu->pntsu-1);
- if( BEZSELECTED(bezt) ) {
+ if( BEZSELECTED_HIDDENHANDLES(bezt) ) {
nu2= nu;
}
}
@@ -2683,28 +2682,16 @@ void mouse_nurb()
else {
if(bezt) {
if(hand==1) {
- if(bezt->f2 & 1) select_beztriple(bezt, DESELECT, 1, HIDDEN);
+ if(bezt->f2 & SELECT) select_beztriple(bezt, DESELECT, 1, HIDDEN);
else select_beztriple(bezt, SELECT, 1, HIDDEN);
- }
- else if(hand==0) {
- if(bezt->f1 & 1) {
- bezt->f1 &= ~1;
- }
- else {
- bezt->f1 |= 1;
- }
- }
- else {
- if(bezt->f3 & 1) {
- bezt->f3 &= ~1;
- }
- else {
- bezt->f3 |= 1;
- }
+ } else if(hand==0) {
+ bezt->f1 ^= SELECT;
+ } else {
+ bezt->f3 ^= SELECT;
}
}
else {
- if(bp->f1 & 1) select_bpoint(bp, DESELECT, 1, HIDDEN);
+ if(bp->f1 & SELECT) select_bpoint(bp, DESELECT, 1, HIDDEN);
else {
select_bpoint(bp, SELECT, 1, HIDDEN);
lastselbp= bp;
@@ -2863,7 +2850,7 @@ void addvert_Nurb(int mode)
(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= 1;
+ newbezt->f1= newbezt->f2= newbezt->f3= SELECT;
if(newbezt->h1 >= 0) newbezt->h2= newbezt->h1;
else newbezt->h2= newbezt->h1= HD_ALIGN; /* does this ever happen? */
VECCOPY(temp, bezt->vec[1]);
@@ -2881,7 +2868,7 @@ void addvert_Nurb(int mode)
MEM_freeN(nu->bezt);
nu->bezt= newbezt;
newbezt+= nu->pntsu;
- newbezt->f1= newbezt->f2= newbezt->f3= 1;
+ newbezt->f1= newbezt->f2= newbezt->f3= SELECT;
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;
@@ -3036,7 +3023,7 @@ void makecyclicNurb()
a= nu->pntsu;
bezt= nu->bezt;
while(a--) {
- if( BEZSELECTED(bezt) ) {
+ if( BEZSELECTED_HIDDENHANDLES(bezt) ) {
if(nu->flagu & CU_CYCLIC) nu->flagu--;
else nu->flagu++;
break;
@@ -3428,7 +3415,7 @@ void select_less_nurb()
a= nu->pntsu;
bezt= nu->bezt;
while(a--) {
- if((bezt->hide==0) && (bezt->f2 & 1)) {
+ if((bezt->hide==0) && (bezt->f2 & SELECT)) {
if(lastsel==1) sel= 1;
else sel= 0;
@@ -3437,22 +3424,22 @@ void select_less_nurb()
if(a==nu->pntsu-1) sel++;
else {
bezt--;
- if((bezt->hide==0) && (bezt->f2 & 1)) sel++;
+ if((bezt->hide==0) && (bezt->f2 & SELECT)) sel++;
bezt++;
}
if(a==0) sel++;
else {
bezt++;
- if((bezt->hide==0) && (bezt->f2 & 1)) sel++;
+ if((bezt->hide==0) && (bezt->f2 & SELECT)) sel++;
bezt--;
}
-
+
if(sel!=2) {
select_beztriple(bezt, DESELECT, 1, VISIBLE);
- lastsel= 1;
- }
- else lastsel= 0;
+ lastsel= 1;
+ }
+ else lastsel= 0;
}
else lastsel= 0;
@@ -3650,7 +3637,7 @@ void delNurb()
a= nu->pntsu;
if(a) {
while(a) {
- if( BEZSELECTED(bezt) );
+ if( BEZSELECTED_HIDDENHANDLES(bezt) );
else break;
a--;
bezt++;
@@ -3687,7 +3674,7 @@ void delNurb()
if( (nu->type & 7)==CU_BEZIER ) {
bezt= nu->bezt;
for(a=0;a<nu->pntsu;a++) {
- if( BEZSELECTED(bezt) ) {
+ if( BEZSELECTED_HIDDENHANDLES(bezt) ) {
memcpy(bezt, bezt+1, (nu->pntsu-a-1)*sizeof(BezTriple));
nu->pntsu--;
a--;
@@ -3740,14 +3727,14 @@ void delNurb()
if( (nu->type & 7)==CU_BEZIER ) {
bezt= nu->bezt;
for(a=0; a<nu->pntsu-1; a++) {
- if( BEZSELECTED(bezt) ) {
+ if( BEZSELECTED_HIDDENHANDLES(bezt) ) {
bezt1= bezt;
bezt2= bezt+1;
- if( (bezt2->f1 & 1) || (bezt2->f2 & 1) || (bezt2->f3 & 1) ) ;
+ if( (bezt2->f1 & SELECT) || (bezt2->f2 & SELECT) || (bezt2->f3 & SELECT) ) ;
else { /* maybe do not make cyclic */
if(a==0 && (nu->flagu & 1) ) {
bezt2= bezt+(nu->pntsu-1);
- if( (bezt2->f1 & 1) || (bezt2->f2 & 1) || (bezt2->f3 & 1) ) {
+ if( (bezt2->f1 & SELECT) || (bezt2->f2 & SELECT) || (bezt2->f3 & SELECT) ) {
nu->flagu--;
DAG_object_flush_update(G.scene, G.obedit, OB_RECALC_DATA);
allqueue(REDRAWVIEW3D, 0);
@@ -4056,7 +4043,7 @@ Nurb *addNurbprim(int type, int stype, int newname)
(BezTriple*)MEM_callocN(2 * sizeof(BezTriple), "addNurbprim1");
bezt= nu->bezt;
bezt->h1= bezt->h2= HD_ALIGN;
- bezt->f1= bezt->f2= bezt->f3= 1;
+ bezt->f1= bezt->f2= bezt->f3= SELECT;
bezt->radius = 1.0;
for(a=0;a<3;a++) {
@@ -4071,7 +4058,7 @@ Nurb *addNurbprim(int type, int stype, int newname)
bezt++;
bezt->h1= bezt->h2= HD_ALIGN;
- bezt->f1= bezt->f2= bezt->f3= 1;
+ bezt->f1= bezt->f2= bezt->f3= SELECT;
bezt->radius = bezt->weight = 1.0;
for(a=0;a<3;a++) {
@@ -4167,7 +4154,7 @@ Nurb *addNurbprim(int type, int stype, int newname)
VECCOPY(bezt->vec[a], cent);
}
bezt->h1= bezt->h2= HD_AUTO;
- bezt->f1= bezt->f2= bezt->f3= 1;
+ bezt->f1= bezt->f2= bezt->f3= SELECT;
bezt->vec[1][0]+= -grid;
for(a=0;a<3;a++) Mat3MulVecfl(imat,bezt->vec[a]);
bezt->radius = bezt->weight = 1.0;
@@ -4177,7 +4164,7 @@ Nurb *addNurbprim(int type, int stype, int newname)
VECCOPY(bezt->vec[a], cent);
}
bezt->h1= bezt->h2= HD_AUTO;
- bezt->f1= bezt->f2= bezt->f3= 1;
+ bezt->f1= bezt->f2= bezt->f3= SELECT;
bezt->vec[1][1]+= grid;
for(a=0;a<3;a++) Mat3MulVecfl(imat,bezt->vec[a]);
bezt->radius = bezt->weight = 1.0;
@@ -4187,7 +4174,7 @@ Nurb *addNurbprim(int type, int stype, int newname)
VECCOPY(bezt->vec[a], cent);
}
bezt->h1= bezt->h2= HD_AUTO;
- bezt->f1= bezt->f2= bezt->f3= 1;
+ bezt->f1= bezt->f2= bezt->f3= SELECT;
bezt->vec[1][0]+= grid;
for(a=0;a<3;a++) Mat3MulVecfl(imat,bezt->vec[a]);
bezt->radius = bezt->weight = 1.0;
@@ -4197,7 +4184,7 @@ Nurb *addNurbprim(int type, int stype, int newname)
VECCOPY(bezt->vec[a], cent);
}
bezt->h1= bezt->h2= HD_AUTO;
- bezt->f1= bezt->f2= bezt->f3= 1;
+ bezt->f1= bezt->f2= bezt->f3= SELECT;
bezt->vec[1][1]+= -grid;
for(a=0;a<3;a++) Mat3MulVecfl(imat,bezt->vec[a]);
bezt->radius = bezt->weight = 1.0;
@@ -4546,7 +4533,7 @@ void clear_tilt()
bezt= nu->bezt;
a= nu->pntsu;
while(a--) {
- if(BEZSELECTED(bezt)) bezt->alfa= 0.0;
+ if(BEZSELECTED_HIDDENHANDLES(bezt)) bezt->alfa= 0.0;
bezt++;
}
}
@@ -4582,9 +4569,9 @@ int bezt_compare (const void *e1, const void *e2)
/* Check selected flags : Ensures that selected keys will be listed first */
- if ((b1->f2 & 1) && !(b2->f2 & 1))
+ if ((b1->f2 & SELECT) && !(b2->f2 & SELECT))
return -1;
- if (!(b1->f2 & 1) && (b2->f2 & 1))
+ if (!(b1->f2 & SELECT) && (b2->f2 & SELECT))
return 1;
return 0;