[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [40202] branches/soc-2011-radish/source/ blender: remove count_selected_defgroups() function and make get_selected_defgroups() return the total selected items .

Campbell Barton ideasman42 at gmail.com
Wed Sep 14 07:56:26 CEST 2011


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. @@



More information about the Bf-blender-cvs mailing list