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

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to