[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