Commit: 10390ca0570296a5ab1b1bfbc4aceae9855614a0
Author: Julian Eisel
Date:   Fri Dec 22 18:20:30 2017 +0100
Branches: blender2.8
https://developer.blender.org/rB10390ca0570296a5ab1b1bfbc4aceae9855614a0

Cleanup: Encapsulate primitive creation data into struct, remove unused argument

Should make it easier to add new and modify existing parameters.

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

M       source/blender/editors/mesh/editmesh_add.c

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

diff --git a/source/blender/editors/mesh/editmesh_add.c 
b/source/blender/editors/mesh/editmesh_add.c
index 77772cfc8cc..a2922b69187 100644
--- a/source/blender/editors/mesh/editmesh_add.c
+++ b/source/blender/editors/mesh/editmesh_add.c
@@ -60,22 +60,27 @@
 
 /* ********* add primitive operators ************* */
 
+typedef struct MakePrimitiveData {
+       float mat[4][4];
+       bool was_editmode;
+} MakePrimitiveData;
+
 static Object *make_prim_init(bContext *C, const char *idname,
-                              float *dia, float mat[4][4],
-                              bool *was_editmode, const float loc[3], const 
float rot[3], const unsigned int layer)
+                              const float loc[3], const float rot[3], const 
unsigned int layer,
+                              MakePrimitiveData *r_creation_data)
 {
        Object *obedit = CTX_data_edit_object(C);
 
-       *was_editmode = false;
+       r_creation_data->was_editmode = false;
        if (obedit == NULL || obedit->type != OB_MESH) {
                obedit = ED_object_add_type(C, OB_MESH, idname, loc, rot, 
false, layer);
 
                /* create editmode */
                ED_object_editmode_enter(C, EM_DO_UNDO | EM_IGNORE_LAYER); /* 
rare cases the active layer is messed up */
-               *was_editmode = true;
+               r_creation_data->was_editmode = true;
        }
 
-       *dia = ED_object_new_primitive_matrix(C, obedit, loc, rot, mat);
+       ED_object_new_primitive_matrix(C, obedit, loc, rot, 
r_creation_data->mat);
 
        return obedit;
 }
@@ -101,17 +106,17 @@ static void make_prim_finish(bContext *C, Object *obedit, 
bool was_editmode, int
 
 static int add_primitive_plane_exec(bContext *C, wmOperator *op)
 {
+       MakePrimitiveData creation_data;
        Object *obedit;
        BMEditMesh *em;
-       float loc[3], rot[3], mat[4][4], dia;
+       float loc[3], rot[3];
        bool enter_editmode;
-       bool was_editmode;
        unsigned int layer;
        const bool calc_uvs = RNA_boolean_get(op->ptr, "calc_uvs");
 
        WM_operator_view3d_unit_defaults(C, op);
        ED_object_add_generic_get_opts(C, op, 'Z', loc, rot, &enter_editmode, 
&layer, NULL);
-       obedit = make_prim_init(C, CTX_DATA_(BLT_I18NCONTEXT_ID_MESH, "Plane"), 
&dia, mat, &was_editmode, loc, rot, layer);
+       obedit = make_prim_init(C, CTX_DATA_(BLT_I18NCONTEXT_ID_MESH, "Plane"), 
loc, rot, layer, &creation_data);
        em = BKE_editmesh_from_object(obedit);
 
        if (calc_uvs) {
@@ -121,12 +126,12 @@ static int add_primitive_plane_exec(bContext *C, 
wmOperator *op)
        if (!EDBM_op_call_and_selectf(
                em, op, "verts.out", false,
                "create_grid x_segments=%i y_segments=%i size=%f matrix=%m4 
calc_uvs=%b",
-               1, 1, RNA_float_get(op->ptr, "radius"), mat, calc_uvs))
+               1, 1, RNA_float_get(op->ptr, "radius"), creation_data.mat, 
calc_uvs))
        {
                return OPERATOR_CANCELLED;
        }
 
-       make_prim_finish(C, obedit, was_editmode, enter_editmode);
+       make_prim_finish(C, obedit, creation_data.was_editmode, enter_editmode);
 
        return OPERATOR_FINISHED;
 }
@@ -152,17 +157,17 @@ void MESH_OT_primitive_plane_add(wmOperatorType *ot)
 
 static int add_primitive_cube_exec(bContext *C, wmOperator *op)
 {
+       MakePrimitiveData creation_data;
        Object *obedit;
        BMEditMesh *em;
-       float loc[3], rot[3], mat[4][4], dia;
+       float loc[3], rot[3];
        bool enter_editmode;
-       bool was_editmode;
        unsigned int layer;
        const bool calc_uvs = RNA_boolean_get(op->ptr, "calc_uvs");
 
        WM_operator_view3d_unit_defaults(C, op);
        ED_object_add_generic_get_opts(C, op, 'Z', loc, rot, &enter_editmode, 
&layer, NULL);
-       obedit = make_prim_init(C, CTX_DATA_(BLT_I18NCONTEXT_ID_MESH, "Cube"), 
&dia, mat, &was_editmode, loc, rot, layer);
+       obedit = make_prim_init(C, CTX_DATA_(BLT_I18NCONTEXT_ID_MESH, "Cube"), 
loc, rot, layer, &creation_data);
        em = BKE_editmesh_from_object(obedit);
 
        if (calc_uvs) {
@@ -172,13 +177,13 @@ static int add_primitive_cube_exec(bContext *C, 
wmOperator *op)
        if (!EDBM_op_call_and_selectf(
                em, op, "verts.out", false,
                "create_cube matrix=%m4 size=%f calc_uvs=%b",
-               mat, RNA_float_get(op->ptr, "radius") * 2.0f, calc_uvs))
+               creation_data.mat, RNA_float_get(op->ptr, "radius") * 2.0f, 
calc_uvs))
        {
                return OPERATOR_CANCELLED;
        }
 
        /* BMESH_TODO make plane side this: M_SQRT2 - plane (diameter of 1.41 
makes it unit size) */
-       make_prim_finish(C, obedit, was_editmode, enter_editmode);
+       make_prim_finish(C, obedit, creation_data.was_editmode, enter_editmode);
 
        return OPERATOR_FINISHED;
 }
@@ -210,13 +215,13 @@ static const EnumPropertyItem fill_type_items[] = {
 
 static int add_primitive_circle_exec(bContext *C, wmOperator *op)
 {
+       MakePrimitiveData creation_data;
        Object *obedit;
        BMEditMesh *em;
-       float loc[3], rot[3], mat[4][4], dia;
+       float loc[3], rot[3];
        bool enter_editmode;
        int cap_end, cap_tri;
        unsigned int layer;
-       bool was_editmode;
        const bool calc_uvs = RNA_boolean_get(op->ptr, "calc_uvs");
 
        cap_end = RNA_enum_get(op->ptr, "fill_type");
@@ -224,7 +229,7 @@ static int add_primitive_circle_exec(bContext *C, 
wmOperator *op)
 
        WM_operator_view3d_unit_defaults(C, op);
        ED_object_add_generic_get_opts(C, op, 'Z', loc, rot, &enter_editmode, 
&layer, NULL);
-       obedit = make_prim_init(C, CTX_DATA_(BLT_I18NCONTEXT_ID_MESH, 
"Circle"), &dia, mat, &was_editmode, loc, rot, layer);
+       obedit = make_prim_init(C, CTX_DATA_(BLT_I18NCONTEXT_ID_MESH, 
"Circle"), loc, rot, layer, &creation_data);
        em = BKE_editmesh_from_object(obedit);
 
        if (calc_uvs) {
@@ -235,12 +240,12 @@ static int add_primitive_circle_exec(bContext *C, 
wmOperator *op)
                em, op, "verts.out", false,
                "create_circle segments=%i radius=%f cap_ends=%b cap_tris=%b 
matrix=%m4 calc_uvs=%b",
                RNA_int_get(op->ptr, "vertices"), RNA_float_get(op->ptr, 
"radius"),
-               cap_end, cap_tri, mat, calc_uvs))
+               cap_end, cap_tri, creation_data.mat, calc_uvs))
        {
                return OPERATOR_CANCELLED;
        }
 
-       make_prim_finish(C, obedit, was_editmode, enter_editmode);
+       make_prim_finish(C, obedit, creation_data.was_editmode, enter_editmode);
 
        return OPERATOR_FINISHED;
 }
@@ -270,12 +275,12 @@ void MESH_OT_primitive_circle_add(wmOperatorType *ot)
 
 static int add_primitive_cylinder_exec(bContext *C, wmOperator *op)
 {
+       MakePrimitiveData creation_data;
        Object *obedit;
        BMEditMesh *em;
-       float loc[3], rot[3], mat[4][4], dia;
+       float loc[3], rot[3];
        bool enter_editmode;
        unsigned int layer;
-       bool was_editmode;
        const int end_fill_type = RNA_enum_get(op->ptr, "end_fill_type");
        const bool cap_end = (end_fill_type != 0);
        const bool cap_tri = (end_fill_type == 2);
@@ -283,7 +288,7 @@ static int add_primitive_cylinder_exec(bContext *C, 
wmOperator *op)
 
        WM_operator_view3d_unit_defaults(C, op);
        ED_object_add_generic_get_opts(C, op, 'Z', loc, rot, &enter_editmode, 
&layer, NULL);
-       obedit = make_prim_init(C, CTX_DATA_(BLT_I18NCONTEXT_ID_MESH, 
"Cylinder"), &dia, mat, &was_editmode, loc, rot, layer);
+       obedit = make_prim_init(C, CTX_DATA_(BLT_I18NCONTEXT_ID_MESH, 
"Cylinder"), loc, rot, layer, &creation_data);
        em = BKE_editmesh_from_object(obedit);
 
        if (calc_uvs) {
@@ -297,12 +302,12 @@ static int add_primitive_cylinder_exec(bContext *C, 
wmOperator *op)
                RNA_float_get(op->ptr, "radius"),
                RNA_float_get(op->ptr, "radius"),
                cap_end, cap_tri,
-               RNA_float_get(op->ptr, "depth"), mat, calc_uvs))
+               RNA_float_get(op->ptr, "depth"), creation_data.mat, calc_uvs))
        {
                return OPERATOR_CANCELLED;
        }
 
-       make_prim_finish(C, obedit, was_editmode, enter_editmode);
+       make_prim_finish(C, obedit, creation_data.was_editmode, enter_editmode);
 
        return OPERATOR_FINISHED;
 }
@@ -333,12 +338,12 @@ void MESH_OT_primitive_cylinder_add(wmOperatorType *ot)
 
 static int add_primitive_cone_exec(bContext *C, wmOperator *op)
 {
+       MakePrimitiveData creation_data;
        Object *obedit;
        BMEditMesh *em;
-       float loc[3], rot[3], mat[4][4], dia;
+       float loc[3], rot[3];
        bool enter_editmode;
        unsigned int layer;
-       bool was_editmode;
        const int end_fill_type = RNA_enum_get(op->ptr, "end_fill_type");
        const bool cap_end = (end_fill_type != 0);
        const bool cap_tri = (end_fill_type == 2);
@@ -346,7 +351,7 @@ static int add_primitive_cone_exec(bContext *C, wmOperator 
*op)
 
        WM_operator_view3d_unit_defaults(C, op);
        ED_object_add_generic_get_opts(C, op, 'Z', loc, rot, &enter_editmode, 
&layer, NULL);
-       obedit = make_prim_init(C, CTX_DATA_(BLT_I18NCONTEXT_ID_MESH, "Cone"), 
&dia, mat, &was_editmode, loc, rot, layer);
+       obedit = make_prim_init(C, CTX_DATA_(BLT_I18NCONTEXT_ID_MESH, "Cone"), 
loc, rot, layer, &creation_data);
        em = BKE_editmesh_from_object(obedit);
 
        if (calc_uvs) {
@@ -357,12 +362,13 @@ static int add_primitive_cone_exec(bContext *C, 
wmOperator *op)
                em, op, "verts.out", false,
                "create_cone segments=%i diameter1=%f diameter2=%f cap_ends=%b 
cap_tris=%b depth=%f matrix=%m4 calc_uvs=%b",
                RNA_int_get(op->ptr, "vertices"), RNA_float_get(op->ptr, 
"radius1"),
-               RNA_float_get(op->ptr, "radius2"), cap_end, cap_tri, 
RNA_float_get(op->ptr, "depth"), mat, calc_uvs))
+               RNA_float_get(op->ptr, "radius2"), cap_end, cap_tri, 
RNA_float_get(op->ptr, "depth"),
+               creation_data.mat, calc_uvs))
        {
                return OPERATOR_CANCELLED;
        }
 
-       make_prim_finish(C, obedit, was_editmode, enter_editmode);
+       make_prim_finish(C, obedit, creation_data.was_editmode, enter_editmode);
 
        return OPERATOR_FINISHED;
 }
@@ -394,17 +400,17 @@ void MESH_OT_primitive_cone_add(wmOperatorType *ot)
 
 static int add_primitive_grid_exec(bContext *C, wmOperator *op)
 {
+       MakePrimitiveData creation_data;
        Object *obedit;
        BMEditMesh *em;
-       float loc[3], rot[3], mat[4][4], dia;
+       float loc[3], rot[3];
        bool enter_editmode;
-       bool was_editmode;
        unsigned int layer;
        const bool calc_uvs = RNA_boolean_get(op->ptr, "calc_uvs");
 
        WM_operator_view3d_unit_defaults(C, op);
        ED_object_add_generic_get_opts(C, op, 'Z', loc, rot, &enter_editmode, 
&layer, NULL);
-       obedit = make_prim_init(C, CTX_DATA_(BLT_I18NCONTEXT_ID_MESH, "Grid"), 
&dia, mat, &was_editmode, loc, rot, layer);
+       obedit = make_prim_init(C, CTX_DATA_(BLT_I18NCONTEXT_ID_MESH, "Grid"), 
loc, rot, layer, &creation_data);
        em = BKE_editmesh_from_object(obedit);
 
        if (calc_uvs) {
@@ -416,12 +422,12 @@ static int add_primitive_grid_exec(bContext *C, wmOperato

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