[Bf-blender-cvs] [10390ca0570] blender2.8: Cleanup: Encapsulate primitive creation data into struct, remove unused argument

Julian Eisel noreply at git.blender.org
Fri Dec 22 18:38:56 CET 2017


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



More information about the Bf-blender-cvs mailing list