[Bf-blender-cvs] [d7a8cb0a35c] soc-2017-normal-tools: Cleanup: make static utility functions, try to find some better names.

Bastien Montagne noreply at git.blender.org
Wed Feb 28 21:37:09 CET 2018


Commit: d7a8cb0a35c18294432af7194f29a28697585cdc
Author: Bastien Montagne
Date:   Wed Feb 28 20:33:06 2018 +0100
Branches: soc-2017-normal-tools
https://developer.blender.org/rBd7a8cb0a35c18294432af7194f29a28697585cdc

Cleanup: make static utility functions, try to find some better names.

Naming is always complicated, trying to get something a bit more
coherent, also with already existing clnor struct...

===================================================================

M	source/blender/bmesh/bmesh_class.h
M	source/blender/bmesh/intern/bmesh_mesh.c
M	source/blender/bmesh/intern/bmesh_mesh.h
M	source/blender/editors/mesh/editmesh_tools.c
M	source/blender/editors/transform/transform.c

===================================================================

diff --git a/source/blender/bmesh/bmesh_class.h b/source/blender/bmesh/bmesh_class.h
index 3d3ddf1cb46..faba8e2b954 100644
--- a/source/blender/bmesh/bmesh_class.h
+++ b/source/blender/bmesh/bmesh_class.h
@@ -268,7 +268,7 @@ enum {
 	BM_FACE = 8
 };
 
-typedef struct TransDataLoopNormal {
+typedef struct BMLoopNorEditData {
 	int loop_index;
 	BMLoop *loop;
 	float mtx[3][3];
@@ -277,17 +277,17 @@ typedef struct TransDataLoopNormal {
 	float nloc[3];
 	float *loc;
 	short *clnors_data;
-} TransDataLoopNormal;
+} BMLoopNorEditData;
 
-typedef struct LoopNormalData {
-	TransDataLoopNormal *normal;
-	/* This one has full amount of loops, used to map loop index to actual TransDataLoopNormal struct. */
-	TransDataLoopNormal **loop_idx_to_transdata_lnors;
+typedef struct BMLoopNorEditDataArray {
+	BMLoopNorEditData *lnor_editdata;
+	/* This one has full amount of loops, used to map loop index to actual BMLoopNorEditData struct. */
+	BMLoopNorEditData **lidx_to_lnor_editdata;
 
-	int offset;
+	int cd_custom_normal_offset;
 	int totloop;
 	void *funcdata;
-} LoopNormalData;
+} BMLoopNorEditDataArray;
 
 #define BM_ALL (BM_VERT | BM_EDGE | BM_LOOP | BM_FACE)
 #define BM_ALL_NOLOOP (BM_VERT | BM_EDGE | BM_FACE)
diff --git a/source/blender/bmesh/intern/bmesh_mesh.c b/source/blender/bmesh/intern/bmesh_mesh.c
index 8e5881bf181..ab6ac9edef4 100644
--- a/source/blender/bmesh/intern/bmesh_mesh.c
+++ b/source/blender/bmesh/intern/bmesh_mesh.c
@@ -1330,7 +1330,33 @@ static int bm_loop_normal_mark_indiv(BMesh *bm, BLI_bitmap *loops)
 	return totloopsel;
 }
 
-LoopNormalData *BM_loop_normal_init(BMesh *bm)
+static void InitTransDataNormal(BMesh *bm, BMLoopNorEditData *tld, BMVert *v, BMLoop *l, const int offset)
+{
+	BLI_assert(bm->lnor_spacearr != NULL);
+	BLI_assert(bm->lnor_spacearr->lspacearr != NULL);
+
+	const int l_index = BM_elem_index_get(l);
+	short *clnors_data = BM_ELEM_CD_GET_VOID_P(l, offset);
+
+	tld->loop_index = l_index;
+	tld->loop = l;
+
+	float custom_normal[3];
+	BKE_lnor_space_custom_data_to_normal(bm->lnor_spacearr->lspacearr[l_index], clnors_data, custom_normal);
+
+	tld->clnors_data = clnors_data;
+	copy_v3_v3(tld->nloc, custom_normal);
+	copy_v3_v3(tld->niloc, custom_normal);
+
+	if (v) {
+		tld->loc = v->co;
+	}
+	else {
+		tld->loc = NULL;
+	}
+}
+
+BMLoopNorEditDataArray *BM_loop_normal_editdata_init(BMesh *bm)
 {
 	BMLoop *l;
 	BMVert *v;
@@ -1343,30 +1369,30 @@ LoopNormalData *BM_loop_normal_init(BMesh *bm)
 
 	BLI_assert(bm->spacearr_dirty == 0);
 
-	LoopNormalData *ld = MEM_mallocN(sizeof(*ld), __func__);
-	ld->loop_idx_to_transdata_lnors = MEM_callocN(sizeof(*ld->loop_idx_to_transdata_lnors) * bm->totloop, __func__);
+	BMLoopNorEditDataArray *ld = MEM_mallocN(sizeof(*ld), __func__);
+	ld->lidx_to_lnor_editdata = MEM_callocN(sizeof(*ld->lidx_to_lnor_editdata) * bm->totloop, __func__);
 
 	if (!CustomData_has_layer(&bm->ldata, CD_CUSTOMLOOPNORMAL)) {
 		BM_data_layer_add(bm, &bm->ldata, CD_CUSTOMLOOPNORMAL);
 	}
-	int cd_custom_normal_offset = CustomData_get_offset(&bm->ldata, CD_CUSTOMLOOPNORMAL);
+	const int cd_custom_normal_offset = CustomData_get_offset(&bm->ldata, CD_CUSTOMLOOPNORMAL);
 
 	BM_mesh_elem_index_ensure(bm, BM_LOOP);
 
 	BLI_bitmap *loops = BLI_BITMAP_NEW(bm->totloop, __func__);
-	if (verts + edges + faces > 1) {
-		/* More than one selection mode, check if only individual normals to edit. */
+	if (faces && (verts || edges)) {
+		/* More than one selection mode, check for individual normals to edit. */
 		totloopsel = bm_loop_normal_mark_indiv(bm, loops);
 	}
 
 	if (totloopsel) {
-		TransDataLoopNormal *tld = ld->normal = MEM_mallocN(sizeof(*tld) * totloopsel, __func__);
+		BMLoopNorEditData *tld = ld->lnor_editdata = MEM_mallocN(sizeof(*tld) * totloopsel, __func__);
 
 		BM_ITER_MESH(v, &viter, bm, BM_VERTS_OF_MESH) {
 			BM_ITER_ELEM(l, &liter, v, BM_LOOPS_OF_VERT) {
 				if (BLI_BITMAP_TEST(loops, BM_elem_index_get(l))) {
 					InitTransDataNormal(bm, tld, v, l, cd_custom_normal_offset);
-					ld->loop_idx_to_transdata_lnors[BM_elem_index_get(l)] = tld;
+					ld->lidx_to_lnor_editdata[BM_elem_index_get(l)] = tld;
 					tld++;
 				}
 			}
@@ -1375,13 +1401,13 @@ LoopNormalData *BM_loop_normal_init(BMesh *bm)
 	}
 	else {  /* If multiple selection modes are inactive OR no such loop is found, fall back to editing all loops. */
 		totloopsel = BM_total_loop_select(bm);
-		TransDataLoopNormal *tld = ld->normal = MEM_mallocN(sizeof(*tld) * totloopsel, __func__);
+		BMLoopNorEditData *tld = ld->lnor_editdata = MEM_mallocN(sizeof(*tld) * totloopsel, __func__);
 
 		BM_ITER_MESH(v, &viter, bm, BM_VERTS_OF_MESH) {
 			if (BM_elem_flag_test(v, BM_ELEM_SELECT)) {
 				BM_ITER_ELEM(l, &liter, v, BM_LOOPS_OF_VERT) {
 					InitTransDataNormal(bm, tld, v, l, cd_custom_normal_offset);
-					ld->loop_idx_to_transdata_lnors[BM_elem_index_get(l)] = tld;
+					ld->lidx_to_lnor_editdata[BM_elem_index_get(l)] = tld;
 					tld++;
 				}
 			}
@@ -1390,14 +1416,14 @@ LoopNormalData *BM_loop_normal_init(BMesh *bm)
 	}
 
 	MEM_freeN(loops);
-	ld->offset = cd_custom_normal_offset;
+	ld->cd_custom_normal_offset = cd_custom_normal_offset;
 	return ld;
 }
 
-void BM_loop_normal_free(LoopNormalData *ld)
+void BM_loop_normal_editdata_free(BMLoopNorEditDataArray *ld)
 {
-	MEM_SAFE_FREE(ld->normal);
-	MEM_SAFE_FREE(ld->loop_idx_to_transdata_lnors);
+	MEM_SAFE_FREE(ld->lnor_editdata);
+	MEM_SAFE_FREE(ld->lidx_to_lnor_editdata);
 	MEM_freeN(ld);
 }
 
@@ -1415,32 +1441,6 @@ int BM_total_loop_select(BMesh *bm)
 	return r_sel;
 }
 
-void InitTransDataNormal(BMesh *bm, TransDataLoopNormal *tld, BMVert *v, BMLoop *l, int offset)
-{
-	BLI_assert(bm->lnor_spacearr != NULL);
-	BLI_assert(bm->lnor_spacearr->lspacearr != NULL);
-
-	const int l_index = BM_elem_index_get(l);
-	short *clnors_data = BM_ELEM_CD_GET_VOID_P(l, offset);
-
-	tld->loop_index = l_index;
-	tld->loop = l;
-
-	float custom_normal[3];
-	BKE_lnor_space_custom_data_to_normal(bm->lnor_spacearr->lspacearr[l_index], clnors_data, custom_normal);
-
-	tld->clnors_data = clnors_data;
-	copy_v3_v3(tld->nloc, custom_normal);
-	copy_v3_v3(tld->niloc, custom_normal);
-
-	if (v) {
-		tld->loc = v->co;
-	}
-	else {
-		tld->loc = NULL;
-	}
-}
-
 static void UNUSED_FUNCTION(bm_mdisps_space_set)(Object *ob, BMesh *bm, int from, int to)
 {
 	/* switch multires data out of tangent space */
diff --git a/source/blender/bmesh/intern/bmesh_mesh.h b/source/blender/bmesh/intern/bmesh_mesh.h
index 487453815a4..2b2f9058954 100644
--- a/source/blender/bmesh/intern/bmesh_mesh.h
+++ b/source/blender/bmesh/intern/bmesh_mesh.h
@@ -29,6 +29,7 @@
 
 struct BMAllocTemplate;
 struct MLoopNorSpaceArray;
+struct BMLoopNorEditDataArray;
 
 void   BM_mesh_elem_toolflags_ensure(BMesh *bm);
 void   BM_mesh_elem_toolflags_clear(BMesh *bm);
@@ -63,10 +64,9 @@ void BM_lnorspace_err(BMesh *bm);
 #endif
 
 /* Loop Generics */
-LoopNormalData *BM_loop_normal_init(BMesh *bm);
-void BM_loop_normal_free(LoopNormalData *ld);
+struct BMLoopNorEditDataArray *BM_loop_normal_editdata_init(BMesh *bm);
+void BM_loop_normal_editdata_free(struct BMLoopNorEditDataArray *ld);
 int BM_total_loop_select(BMesh *bm);
-void InitTransDataNormal(BMesh *bm, TransDataLoopNormal *tld, BMVert *v, BMLoop *l, int offset);
 
 void BM_edges_sharp_from_angle_set(BMesh *bm, const float split_angle);
 
diff --git a/source/blender/editors/mesh/editmesh_tools.c b/source/blender/editors/mesh/editmesh_tools.c
index 6e3c2317049..9fc89ba7f42 100644
--- a/source/blender/editors/mesh/editmesh_tools.c
+++ b/source/blender/editors/mesh/editmesh_tools.c
@@ -6002,7 +6002,7 @@ static int init_point_normals(bContext *C, wmOperator *op, const wmEvent *UNUSED
 	BMesh *bm = em->bm;
 
 	BKE_editmesh_lnorspace_update(em);
-	LoopNormalData *ld = BM_loop_normal_init(bm);
+	BMLoopNorEditDataArray *ld = BM_loop_normal_editdata_init(bm);
 
 	ld->funcdata = NULL;
 	op->customdata = ld;
@@ -6014,8 +6014,8 @@ static void apply_point_normals(bContext *C, wmOperator *op, const wmEvent *UNUS
 {
 	Object *obedit = CTX_data_edit_object(C);
 	BMesh *bm = BKE_editmesh_from_object(obedit)->bm;
-	LoopNormalData *ld = op->customdata;
-	TransDataLoopNormal *tld = ld->normal;
+	BMLoopNorEditDataArray *ld = op->customdata;
+	BMLoopNorEditData *tld = ld->lnor_editdata;
 
 	const bool point_away = RNA_boolean_get(op->ptr, "point_away");
 	const bool spherize = RNA_boolean_get(op->ptr, "spherize");
@@ -6068,8 +6068,8 @@ static void apply_point_normals(bContext *C, wmOperator *op, const wmEvent *UNUS
 
 static void point_normals_free(bContext *C, wmOperator *op)
 {
-	LoopNormalData *ld = op->customdata;
-	BM_loop_normal_free(ld);
+	BMLoopNorEditDataArray *ld = op->customdata;
+	BM_loop_normal_editdata_free(ld);
 	op->customdata = NULL;
 	ED_area_headerprint(CTX_wm_area(C), NULL);
 }
@@ -6110,8 +6110,8 @@ static int point_normals_mouse(bContext *C, wmOperator *op, const wmEvent *event
 		return OPERATOR_FINISHED;
 	}
 	else if ((ISKEYBOARD(event->type) || event->type == RIGHTMOUSE) && event->type != MKEY) {
-		LoopNormalData *ld = op->customdata;
-		TransDataLoopNormal *tld = ld->normal;
+		BMLoopNorEditDataArray *ld = op->customdata;
+		BMLoopNorEditData *tld = ld->lnor_editdata;
 
 		for (i = 0; i < ld->totloop; i++, tld++) {  /* Reset custom normal data. */
 			BKE_lnor_space_custom_normal_to_data(bm->lnor_spacearr->lspacearr[tld->loop_index], tld->niloc, tld->clnors_data);
@@ -6133,7 +6133,7 @@ static int edbm_point_normals_modal(bContext *C, wmOperator *op, const wmEvent *
 
 	bool handled = false;
 	PropertyRNA *prop = RNA_struct_find_property(op->ptr, "target_location");
-	LoopNormalData *ld = op->customdata;
+	BMLoopNorEditDataArray *ld = op->customdata;
 
 	if (ld->funcdata) {  /* Executes and transfers control to point_normals_mouse. */
 		int(*apply)(bContext *, wmOperator *, const wmEvent *);
@@ -6396,13 +6396,13 @@ static void custom_loops_tag(BMesh *bm, const bool do_edges)
 	bm->elem_index_dirty &= ~(BM_FACE | BM_LOOP);
 }
 
-static void merge_loop(bContext *C, LoopNormalData *ld)
+static void merge_loop(bContext *C, BMLoopNorEditDataArray *ld)
 {
 	Object *obedit = CTX_data_edit_object(C);
 	BMEditMesh *em = BKE_editmesh_from_object(obedit);
 	BMesh *bm = em->bm;
 
-	TransDataLoopNormal *tld = ld

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list