Revision: 40202
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=40202
Author:   campbellbarton
Date:     2011-09-14 05:56:25 +0000 (Wed, 14 Sep 2011)
Log Message:
-----------
remove count_selected_defgroups() function and make get_selected_defgroups() 
return the total selected items.
also some variable renameing, no functional changes.

Modified Paths:
--------------
    branches/soc-2011-radish/source/blender/blenkernel/BKE_armature.h
    branches/soc-2011-radish/source/blender/blenkernel/intern/DerivedMesh.c
    branches/soc-2011-radish/source/blender/blenkernel/intern/armature.c
    branches/soc-2011-radish/source/blender/editors/sculpt_paint/paint_vertex.c

Modified: branches/soc-2011-radish/source/blender/blenkernel/BKE_armature.h
===================================================================
--- branches/soc-2011-radish/source/blender/blenkernel/BKE_armature.h   
2011-09-14 05:25:43 UTC (rev 40201)
+++ branches/soc-2011-radish/source/blender/blenkernel/BKE_armature.h   
2011-09-14 05:56:25 UTC (rev 40202)
@@ -100,8 +100,7 @@
 void vec_roll_to_mat3(float *vec, float roll, float mat[][3]);
 void mat3_to_vec_roll(float mat[][3], float *vec, float *roll);
 
-char* get_selected_defgroups(struct Object *ob, int defcnt);
-int count_selected_defgroups(const char *list, int len);
+int get_selected_defgroups(struct Object *ob, char *defbase_sel, int 
defbase_len);
 
 /* Common Conversions Between Co-ordinate Spaces */
 void armature_mat_world_to_pose(struct Object *ob, float inmat[][4], float 
outmat[][4]);

Modified: 
branches/soc-2011-radish/source/blender/blenkernel/intern/DerivedMesh.c
===================================================================
--- branches/soc-2011-radish/source/blender/blenkernel/intern/DerivedMesh.c     
2011-09-14 05:25:43 UTC (rev 40201)
+++ branches/soc-2011-radish/source/blender/blenkernel/intern/DerivedMesh.c     
2011-09-14 05:56:25 UTC (rev 40202)
@@ -1760,23 +1760,23 @@
        int i;
 
        // Jason was here
-       int defcnt = BLI_countlist(&ob->defbase);
-       char *dg_flags = get_selected_defgroups(ob, defcnt);
-       int selected = count_selected_defgroups(dg_flags, defcnt);
-       int unselected = defcnt - selected;
+       int defbase_len = BLI_countlist(&ob->defbase);
+       char *defbase_sel = MEM_mallocN(defbase_len * sizeof(char), __func__);
+       int selected = get_selected_defgroups(ob, defbase_sel, defbase_len);
+       int unselected = defbase_len - selected;
 
        wtcol = MEM_callocN (sizeof (unsigned char) * me->totface*4*4, 
"weightmap");
        
        memset(wtcol, 0x55, sizeof (unsigned char) * me->totface*4*4);
        for (i=0; i<me->totface; i++, mf++) {
-               calc_weightpaint_vert_color(ob, coba, mf->v1, &wtcol[(i*4 + 
0)*4], dg_flags, selected, unselected, draw_flag);
-               calc_weightpaint_vert_color(ob, coba, mf->v2, &wtcol[(i*4 + 
1)*4], dg_flags, selected, unselected, draw_flag);
-               calc_weightpaint_vert_color(ob, coba, mf->v3, &wtcol[(i*4 + 
2)*4], dg_flags, selected, unselected, draw_flag);
+               calc_weightpaint_vert_color(ob, coba, mf->v1, &wtcol[(i*4 + 
0)*4], defbase_sel, selected, unselected, draw_flag);
+               calc_weightpaint_vert_color(ob, coba, mf->v2, &wtcol[(i*4 + 
1)*4], defbase_sel, selected, unselected, draw_flag);
+               calc_weightpaint_vert_color(ob, coba, mf->v3, &wtcol[(i*4 + 
2)*4], defbase_sel, selected, unselected, draw_flag);
                if (mf->v4)
-                       calc_weightpaint_vert_color(ob, coba, mf->v4, 
&wtcol[(i*4 + 3)*4], dg_flags, selected, unselected, draw_flag);
+                       calc_weightpaint_vert_color(ob, coba, mf->v4, 
&wtcol[(i*4 + 3)*4], defbase_sel, selected, unselected, draw_flag);
        }
        // Jason
-       MEM_freeN(dg_flags);
+       MEM_freeN(defbase_sel);
 
        CustomData_add_layer(&dm->faceData, CD_WEIGHT_MCOL, CD_ASSIGN, wtcol, 
dm->numFaceData);
 }

Modified: branches/soc-2011-radish/source/blender/blenkernel/intern/armature.c
===================================================================
--- branches/soc-2011-radish/source/blender/blenkernel/intern/armature.c        
2011-09-14 05:25:43 UTC (rev 40201)
+++ branches/soc-2011-radish/source/blender/blenkernel/intern/armature.c        
2011-09-14 05:56:25 UTC (rev 40202)
@@ -2467,40 +2467,30 @@
 }
 
 /* Jason was here */
-char* get_selected_defgroups(Object *ob, int defcnt)
+/* Returns total selected vgroups */
+int get_selected_defgroups(Object *ob, char *dg_selection, int defbase_len)
 {
-       bPoseChannel *chan;
-       bPose *pose;
        bDeformGroup *defgroup;
-       //Bone *bone;
-       char *dg_flags = MEM_callocN(defcnt*sizeof(char), "dg_selected_flags");
-       int i;
-       Object *armob = object_pose_armature_get(ob);
+       unsigned int i;
+       Object *armob= object_pose_armature_get(ob);
+       int dg_flags_sel_tot= 0;
 
        if(armob) {
-               pose = armob->pose;
-               for (chan=pose->chanbase.first; chan; chan=chan->next) {
-                       for (i = 0, defgroup = ob->defbase.first; i < defcnt && 
defgroup; defgroup = defgroup->next, i++) {
-                               if(!strcmp(defgroup->name, chan->bone->name)) {
-                                       dg_flags[i] = (chan->bone->flag & 
BONE_SELECTED);
-                               }
+               bPose *pose= armob->pose;
+               for (i= 0, defgroup= ob->defbase.first; i < defbase_len && 
defgroup; defgroup = defgroup->next, i++) {
+                       bPoseChannel *pchan= get_pose_channel(pose, 
defgroup->name);
+                       if(pchan && (pchan->bone->flag & BONE_SELECTED)) {
+                               dg_selection[i]= TRUE;
+                               dg_flags_sel_tot++;
                        }
+                       else {
+                               dg_selection[i]= FALSE;
+                       }
                }
        }
+       else {
+               memset(dg_selection, FALSE, sizeof(char) * defbase_len);
+       }
 
-       return dg_flags;
+       return dg_flags_sel_tot;
 }
-
-/* TODO move duplicates to header */
-/* Jason was here duplicate function */
-int count_selected_defgroups(const char *list, int len)
-{
-       int i;
-       int cnt = 0;
-       for(i = 0; i < len; i++) {
-               if (list[i]) {
-                       cnt++;
-               }
-       }
-       return cnt;
-}

Modified: 
branches/soc-2011-radish/source/blender/editors/sculpt_paint/paint_vertex.c
===================================================================
--- branches/soc-2011-radish/source/blender/editors/sculpt_paint/paint_vertex.c 
2011-09-14 05:25:43 UTC (rev 40201)
+++ branches/soc-2011-radish/source/blender/editors/sculpt_paint/paint_vertex.c 
2011-09-14 05:56:25 UTC (rev 40202)
@@ -1158,15 +1158,15 @@
  * gen_lck_flags gets the status of "flag" for each bDeformGroup
  *in ob->defbase and returns an array containing them
  */
-static char *gen_lck_flags(Object* ob, int defcnt)
+static char *gen_lck_flags(Object* ob, int defbase_len)
 {
        char is_locked = FALSE;
        int i;
-       //int defcnt = BLI_countlist(&ob->defbase);
-       char *flags = MEM_mallocN(defcnt*sizeof(char), "defflags");
+       //int defbase_len = BLI_countlist(&ob->defbase);
+       char *flags = MEM_mallocN(defbase_len*sizeof(char), "defflags");
        bDeformGroup *defgroup;
 
-       for(i = 0, defgroup = ob->defbase.first; i < defcnt && defgroup; 
defgroup = defgroup->next, i++) {
+       for(i = 0, defgroup = ob->defbase.first; i < defbase_len && defgroup; 
defgroup = defgroup->next, i++) {
                flags[i] = defgroup->flag;
                if(flags[i]) {
                        is_locked = TRUE;
@@ -1180,10 +1180,10 @@
        return NULL;
 }
 /* Jason was here */
-static int has_locked_group_selected(int defcnt, char *selection, char *flags) 
{
+static int has_locked_group_selected(int defbase_len, char *defbase_sel, char 
*flags) {
        int i;
-       for(i = 0; i < defcnt; i++) {
-               if(selection[i] && flags[i]) {
+       for(i = 0; i < defbase_len; i++) {
+               if(defbase_sel[i] && flags[i]) {
                        return TRUE;
                }
        }
@@ -1192,13 +1192,13 @@
 
 /* Jason was here */
 #if 0 /* UNUSED */
-static int has_unselected_unlocked_bone_group(int defcnt, char *selection, int 
selected, char *flags, char *bone_groups) {
+static int has_unselected_unlocked_bone_group(int defbase_len, char 
*defbase_sel, int selected, char *flags, char *bone_groups) {
        int i;
-       if(defcnt == selected) {
+       if(defbase_len == selected) {
                return FALSE;
        }
-       for(i = 0; i < defcnt; i++) {
-               if(bone_groups[i] && !selection[i] && !flags[i]) {
+       for(i = 0; i < defbase_len; i++) {
+               if(bone_groups[i] && !defbase_sel[i] && !flags[i]) {
                        return TRUE;
                }
        }
@@ -1207,13 +1207,13 @@
 #endif
 
 /*Jason*/
-static void multipaint_selection(MDeformVert *dvert, float change, char 
*selection, int defcnt) {
+static void multipaint_selection(MDeformVert *dvert, float change, char 
*defbase_sel, int defbase_len) {
        int i;
        MDeformWeight *dw;
        float val;
        // make sure they are all at most 1 after the change
-       for(i = 0; i < defcnt; i++) {
-               if(selection[i]) {
+       for(i = 0; i < defbase_len; i++) {
+               if(defbase_sel[i]) {
                        dw = defvert_find_index(dvert, i);
                        if(dw && dw->weight) {
                                val = dw->weight * change;
@@ -1229,8 +1229,8 @@
                }
        }
        // apply the valid change
-       for(i = 0; i < defcnt; i++) {
-               if(selection[i]) {
+       for(i = 0; i < defbase_len; i++) {
+               if(defbase_sel[i]) {
                        dw = defvert_find_index(dvert, i);
                        if(dw && dw->weight) {
                                dw->weight = dw->weight * change;
@@ -1288,7 +1288,7 @@
 // observe the changes made to the weights of groups.
 // make sure all locked groups on the vertex have the same deformation
 // by moving the changes made to groups onto other unlocked groups
-static void enforce_locks(MDeformVert *odv, MDeformVert *ndv, int defcnt, char 
*flags, char *bone_groups, char *validmap) {
+static void enforce_locks(MDeformVert *odv, MDeformVert *ndv, int defbase_len, 
char *flags, char *bone_groups, char *validmap) {
        float totchange = 0.0f;
        float totchange_allowed = 0.0f;
        float left_over;
@@ -1310,9 +1310,9 @@
                return;
        }
        // record if a group was changed, unlocked and not changed, or locked
-       change_status = MEM_callocN(sizeof(char)*defcnt, "unlocked_unchanged");
+       change_status = MEM_callocN(sizeof(char)*defbase_len, 
"unlocked_unchanged");
 
-       for(i = 0; i < defcnt; i++) {
+       for(i = 0; i < defbase_len; i++) {
                ndw = defvert_find_index(ndv, i);
                odw = defvert_find_index(odv, i);
                // the weights are zero, so we can assume a lot
@@ -1410,12 +1410,12 @@
 }
 /*Jason*/
 // multi-paint's initial, potential change is computed here based on the 
user's stroke
-static float get_mp_change(MDeformVert *odv, char *selection, float 
brush_change) {
+static float get_mp_change(MDeformVert *odv, char *defbase_sel, float 
brush_change) {
        float selwsum = 0.0f;
        int i;
        MDeformWeight *dw;
        for(i=0; i < odv->totweight; i++) {
-               if(selection[(dw = (odv->dw+i))->def_nr]) {
+               if(defbase_sel[(dw = (odv->dw+i))->def_nr]) {
                        selwsum += dw->weight;
                }
        }
@@ -1452,7 +1452,7 @@
 /*Jason*/
 /* fresh start to make multi-paint and locking modular */
 /* returns TRUE if it thinks you need to reset the weights due to normalizing 
while multi-painting */
-static int apply_mp_lcks_normalize(Mesh *me, int index, MDeformWeight *dw, 
MDeformWeight *tdw, int defcnt, float change, float oldChange, float oldw, 
float neww, char *selection, int selected, char *bone_groups, char *validmap, 
char *flags, int multipaint) {
+static int apply_mp_lcks_normalize(Mesh *me, int index, MDeformWeight *dw, 
MDeformWeight *tdw, int defbase_len, float change, float oldChange, float oldw, 
float neww, char *defbase_sel, int selected, char *bone_groups, char *validmap, 
char *flags, int multipaint) {
        MDeformVert *dvert = me->dvert+index;
        MDeformVert dv= {NULL};
 
@@ -1461,10 +1461,10 @@
        dv.totweight = dvert->totweight;

@@ Diff output truncated at 10240 characters. @@
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to