3 duplicate functions: bone_flip_name() object_flip_name() flip_side_name()
authorCampbell Barton <ideasman42@gmail.com>
Fri, 30 Jul 2010 01:13:07 +0000 (01:13 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Fri, 30 Jul 2010 01:13:07 +0000 (01:13 +0000)
removed object_flip_name() & bone_flip_name(), use flip_side_name()

source/blender/blenkernel/BKE_armature.h
source/blender/blenkernel/intern/armature.c
source/blender/editors/armature/editarmature.c
source/blender/editors/armature/poseobject.c
source/blender/editors/interface/interface_templates.c
source/blender/editors/object/object_select.c
source/blender/editors/sculpt_paint/paint_vertex.c

index 2c661a7..242de4d 100644 (file)
@@ -80,7 +80,6 @@ void free_armature(struct bArmature *arm);
 void make_local_armature(struct bArmature *arm);
 struct bArmature *copy_armature(struct bArmature *arm);
 
-void bone_flip_name (char *name, int strip_number);
 int bone_autoside_name (char *name, int strip_number, short axis, float head, float tail);
 
 struct Bone *get_named_bone (struct bArmature *arm, const char *name);
index 990993b..b9b1717 100644 (file)
@@ -245,117 +245,6 @@ Bone *get_named_bone (bArmature *arm, const char *name)
        return bone;
 }
 
-
-#define IS_SEPARATOR(a)        (a=='.' || a==' ' || a=='-' || a=='_')
-
-/* finds the best possible flipped name. For renaming; check for unique names afterwards */
-/* if strip_number: removes number extensions */
-void bone_flip_name (char *name, int strip_number)
-{
-       int             len;
-       char    prefix[128]={""};       /* The part before the facing */
-       char    suffix[128]={""};       /* The part after the facing */
-       char    replace[128]={""};      /* The replacement string */
-       char    number[128]={""};       /* The number extension string */
-       char    *index=NULL;
-
-       len= strlen(name);
-       if(len<3) return;       // we don't do names like .R or .L
-
-       /* We first check the case with a .### extension, let's find the last period */
-       if(isdigit(name[len-1])) {
-               index= strrchr(name, '.');      // last occurrence
-               if (index && isdigit(index[1]) ) {              // doesnt handle case bone.1abc2 correct..., whatever!
-                       if(strip_number==0) 
-                               strcpy(number, index);
-                       *index= 0;
-                       len= strlen(name);
-               }
-       }
-
-       strcpy (prefix, name);
-
-       /* first case; separator . - _ with extensions r R l L  */
-       if( IS_SEPARATOR(name[len-2]) ) {
-               switch(name[len-1]) {
-                       case 'l':
-                               prefix[len-1]= 0;
-                               strcpy(replace, "r");
-                               break;
-                       case 'r':
-                               prefix[len-1]= 0;
-                               strcpy(replace, "l");
-                               break;
-                       case 'L':
-                               prefix[len-1]= 0;
-                               strcpy(replace, "R");
-                               break;
-                       case 'R':
-                               prefix[len-1]= 0;
-                               strcpy(replace, "L");
-                               break;
-               }
-       }
-       /* case; beginning with r R l L , with separator after it */
-       else if( IS_SEPARATOR(name[1]) ) {
-               switch(name[0]) {
-                       case 'l':
-                               strcpy(replace, "r");
-                               strcpy(suffix, name+1);
-                               prefix[0]= 0;
-                               break;
-                       case 'r':
-                               strcpy(replace, "l");
-                               strcpy(suffix, name+1);
-                               prefix[0]= 0;
-                               break;
-                       case 'L':
-                               strcpy(replace, "R");
-                               strcpy(suffix, name+1);
-                               prefix[0]= 0;
-                               break;
-                       case 'R':
-                               strcpy(replace, "L");
-                               strcpy(suffix, name+1);
-                               prefix[0]= 0;
-                               break;
-               }
-       }
-       else if(len > 5) {
-               /* hrms, why test for a separator? lets do the rule 'ultimate left or right' */
-               index = BLI_strcasestr(prefix, "right");
-               if (index==prefix || index==prefix+len-5) {
-                       if(index[0]=='r') 
-                               strcpy (replace, "left");
-                       else {
-                               if(index[1]=='I') 
-                                       strcpy (replace, "LEFT");
-                               else
-                                       strcpy (replace, "Left");
-                       }
-                       *index= 0;
-                       strcpy (suffix, index+5);
-               }
-               else {
-                       index = BLI_strcasestr(prefix, "left");
-                       if (index==prefix || index==prefix+len-4) {
-                               if(index[0]=='l') 
-                                       strcpy (replace, "right");
-                               else {
-                                       if(index[1]=='E') 
-                                               strcpy (replace, "RIGHT");
-                                       else
-                                               strcpy (replace, "Right");
-                               }
-                               *index= 0;
-                               strcpy (suffix, index+4);
-                       }
-               }               
-       }
-
-       sprintf (name, "%s%s%s%s", prefix, replace, suffix, number);
-}
-
 /* Finds the best possible extension to the name on a particular axis. (For renaming, check for unique names afterwards)
  * This assumes that bone names are at most 32 chars long!
  *     strip_number: removes number extensions  (TODO: not used)
index 5386dbc..7db20fe 100644 (file)
@@ -1752,9 +1752,8 @@ EditBone *ED_armature_bone_get_mirrored(ListBase *edbo, EditBone *ebo)
        
        if (ebo == NULL)
                return NULL;
-       
-       BLI_strncpy(name, ebo->name, sizeof(name));
-       bone_flip_name(name, 0);                // 0 = don't strip off number extensions
+
+       flip_side_name(name, ebo->name, FALSE);
        
        for (eboflip= edbo->first; eboflip; eboflip=eboflip->next) {
                if (ebo != eboflip) {
@@ -4741,11 +4740,10 @@ void add_verts_to_dgroups(Scene *scene, Object *ob, Object *par, int heat, int m
                /* find flipped group */
                if (dgroup && mirror) {
                        char name[32];
-                       
-                       BLI_strncpy(name, dgroup->name, 32);
+
                        // 0 = don't strip off number extensions
-                       bone_flip_name(name, 0);
-                       
+                       flip_side_name(name, dgroup->name, FALSE);
+
                        for (curdg = ob->defbase.first; curdg; curdg=curdg->next) {
                                if (!strcmp(curdg->name, name))
                                        break;
@@ -5540,8 +5538,7 @@ static int armature_flip_names_exec (bContext *C, wmOperator *op)
        /* loop through selected bones, auto-naming them */
        CTX_DATA_BEGIN(C, EditBone *, ebone, selected_editable_bones)
        {
-               BLI_strncpy(newname, ebone->name, sizeof(newname));
-               bone_flip_name(newname, 1);             // 1 = do strip off number extensions
+               flip_side_name(newname, ebone->name, TRUE); // 1 = do strip off number extensions
                ED_armature_bone_rename(arm, ebone->name, newname);
        }
        CTX_DATA_END;
index 6b71ed1..633b0b4 100644 (file)
@@ -897,7 +897,6 @@ static int pose_paste_exec (bContext *C, wmOperator *op)
        Scene *scene= CTX_data_scene(C);
        Object *ob= CTX_data_active_object(C);
        bPoseChannel *chan, *pchan;
-       char name[32];
        int flip= RNA_boolean_get(op->ptr, "flipped");
        
        /* sanity checks */
@@ -913,10 +912,12 @@ static int pose_paste_exec (bContext *C, wmOperator *op)
        for (chan= g_posebuf->chanbase.first; chan; chan=chan->next) {
                if (chan->flag & POSE_KEY) {
                        /* get the name - if flipping, we must flip this first */
-                       BLI_strncpy(name, chan->name, sizeof(name));
+                       char name[32];
                        if (flip)
-                               bone_flip_name(name, 0);                /* 0 = don't strip off number extensions */
-                               
+                               flip_side_name(name, chan->name, 0);            /* 0 = don't strip off number extensions */
+                       else
+                               BLI_strncpy(name, chan->name, sizeof(name));
+
                        /* only copy when channel exists, poses are not meant to add random channels to anymore */
                        pchan= get_pose_channel(ob->pose, name);
                        
@@ -1431,7 +1432,6 @@ static int pose_flip_names_exec (bContext *C, wmOperator *op)
 {
        Object *ob= CTX_data_active_object(C);
        bArmature *arm;
-       char newname[32];
        
        /* paranoia checks */
        if (ELEM(NULL, ob, ob->pose)) 
@@ -1441,8 +1441,8 @@ static int pose_flip_names_exec (bContext *C, wmOperator *op)
        /* loop through selected bones, auto-naming them */
        CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones)
        {
-               BLI_strncpy(newname, pchan->name, sizeof(newname));
-               bone_flip_name(newname, 1);     // 1 = do strip off number extensions
+               char newname[32];
+               flip_side_name(newname, pchan->name, TRUE);
                ED_armature_bone_rename(arm, pchan->name, newname);
        }
        CTX_DATA_END;
@@ -1546,10 +1546,8 @@ void pose_activate_flipped_bone(Scene *scene)
                
                if(arm->act_bone) {
                        char name[32];
-                       
-                       BLI_strncpy(name, arm->act_bone->name, 32);
-                       bone_flip_name(name, 1);        // 0 = do not strip off number extensions
-                       
+                       flip_side_name(name, arm->act_bone->name, TRUE);
+
                        pchanf= get_pose_channel(ob->pose, name);
                        if(pchanf && pchanf->bone != arm->act_bone) {
                                arm->act_bone->flag &= ~BONE_SELECTED;
index 01d2ad2..488258d 100644 (file)
@@ -1321,7 +1321,6 @@ static void colorband_add_cb(bContext *C, void *cb_v, void *coba_v)
 static void colorband_del_cb(bContext *C, void *cb_v, void *coba_v)
 {
        ColorBand *coba= coba_v;
-       int a;
 
        if(colorband_element_remove(coba, coba->cur)) {
                ED_undo_push(C, "Delete colorband");
index 7eedefc..3c86c13 100644 (file)
@@ -53,6 +53,7 @@
 #include "BKE_report.h"
 #include "BKE_scene.h"
 #include "BKE_utildefines.h"
+#include "BKE_deform.h"
 
 #include "WM_api.h"
 #include "WM_types.h"
@@ -824,130 +825,17 @@ void OBJECT_OT_select_same_group(wmOperatorType *ot)
 }
 
 /**************************** Select Mirror ****************************/
-
-/* finds the best possible flipped name. For renaming; check for unique names afterwards */
-/* if strip_number: removes number extensions */
-void object_flip_name (char *name)
-{
-       int     len;
-       char    prefix[128]={""};   /* The part before the facing */
-       char    suffix[128]={""};   /* The part after the facing */
-       char    replace[128]={""};  /* The replacement string */
-       char    number[128]={""};   /* The number extension string */
-       char    *index=NULL;
-
-       len= strlen(name);
-       if(len<3) return; // we don't do names like .R or .L
-
-       /* We first check the case with a .### extension, let's find the last period */
-       if(isdigit(name[len-1])) {
-               index= strrchr(name, '.'); // last occurrence
-               if (index && isdigit(index[1]) ) { // doesnt handle case bone.1abc2 correct..., whatever!
-                       strcpy(number, index);
-                       *index= 0;
-                       len= strlen(name);
-               }
-       }
-
-       strcpy (prefix, name);
-
-#define IS_SEPARATOR(a) ((a)=='.' || (a)==' ' || (a)=='-' || (a)=='_')
-
-       /* first case; separator . - _ with extensions r R l L  */
-       if( IS_SEPARATOR(name[len-2]) ) {
-               switch(name[len-1]) {
-                       case 'l':
-                               prefix[len-1]= 0;
-                               strcpy(replace, "r");
-                               break;
-                       case 'r':
-                               prefix[len-1]= 0;
-                               strcpy(replace, "l");
-                               break;
-                       case 'L':
-                               prefix[len-1]= 0;
-                               strcpy(replace, "R");
-                               break;
-                       case 'R':
-                               prefix[len-1]= 0;
-                               strcpy(replace, "L");
-                               break;
-               }
-       }
-       /* case; beginning with r R l L , with separator after it */
-       else if( IS_SEPARATOR(name[1]) ) {
-               switch(name[0]) {
-                       case 'l':
-                               strcpy(replace, "r");
-                               strcpy(suffix, name+1);
-                               prefix[0]= 0;
-                               break;
-                       case 'r':
-                               strcpy(replace, "l");
-                               strcpy(suffix, name+1);
-                               prefix[0]= 0;
-                               break;
-                       case 'L':
-                               strcpy(replace, "R");
-                               strcpy(suffix, name+1);
-                               prefix[0]= 0;
-                               break;
-                       case 'R':
-                               strcpy(replace, "L");
-                               strcpy(suffix, name+1);
-                               prefix[0]= 0;
-                               break;
-               }
-       }
-       else if(len > 5) {
-               /* hrms, why test for a separator? lets do the rule 'ultimate left or right' */
-               index = BLI_strcasestr(prefix, "right");
-               if (index==prefix || index==prefix+len-5) {
-                       if(index[0]=='r') 
-                               strcpy (replace, "left");
-                       else {
-                               if(index[1]=='I') 
-                                       strcpy (replace, "LEFT");
-                               else
-                                       strcpy (replace, "Left");
-                       }
-                       *index= 0;
-                       strcpy (suffix, index+5);
-               }
-               else {
-                       index = BLI_strcasestr(prefix, "left");
-                       if (index==prefix || index==prefix+len-4) {
-                               if(index[0]=='l') 
-                                       strcpy (replace, "right");
-                               else {
-                                       if(index[1]=='E') 
-                                               strcpy (replace, "RIGHT");
-                                       else
-                                               strcpy (replace, "Right");
-                               }
-                               *index= 0;
-                               strcpy (suffix, index+4);
-                       }
-               }
-       }
-
-#undef IS_SEPARATOR
-
-       sprintf (name, "%s%s%s%s", prefix, replace, suffix, number);
-}
-
 static int object_select_mirror_exec(bContext *C, wmOperator *op)
 {
-       char tmpname[32];
        short extend;
        
        extend= RNA_boolean_get(op->ptr, "extend");
        
        CTX_DATA_BEGIN(C, Base*, primbase, selected_bases) {
 
-               strcpy(tmpname, primbase->object->id.name+2);
-               object_flip_name(tmpname);
-               
+               char tmpname[32];
+               flip_side_name(tmpname, primbase->object->id.name+2, TRUE);
+
                CTX_DATA_BEGIN(C, Base*, secbase, visible_bases) {
                        if(!strcmp(secbase->object->id.name+2, tmpname)) {
                                ED_base_object_select(secbase, BA_SELECT);
index f7cc135..8832c7c 100644 (file)
@@ -386,9 +386,8 @@ void wpaint_fill(VPaint *wp, Object *ob, float paintweight)
                        int actdef= 0;
                        char name[32];
 
-                       BLI_strncpy(name, defgroup->name, 32);
-                       bone_flip_name(name, 0);                /* 0 = don't strip off number extensions */
-                       
+                       flip_side_name(name, defgroup->name, FALSE);
+
                        for (curdef = ob->defbase.first; curdef; curdef=curdef->next, actdef++)
                                if (!strcmp(curdef->name, name))
                                        break;
@@ -1390,10 +1389,9 @@ static int wpaint_stroke_test_start(bContext *C, wmOperator *op, wmEvent *event)
                        bDeformGroup *curdef;
                        int actdef= 0;
                        char name[32];
-                       
-                       BLI_strncpy(name, defgroup->name, 32);
-                       bone_flip_name(name, 0);                /* 0 = don't strip off number extensions */
-                       
+
+                       flip_side_name(name, defgroup->name, FALSE);
+
                        for (curdef = ob->defbase.first; curdef; curdef=curdef->next, actdef++)
                                if (!strcmp(curdef->name, name))
                                        break;