[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [58592] trunk/blender/source/blender: triangulate and beauty fill also needed changes to selection handling after recent changes .

Campbell Barton ideasman42 at gmail.com
Thu Jul 25 09:00:08 CEST 2013


Revision: 58592
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=58592
Author:   campbellbarton
Date:     2013-07-25 07:00:07 +0000 (Thu, 25 Jul 2013)
Log Message:
-----------
triangulate and beauty fill also needed changes to selection handling after recent changes.

Modified Paths:
--------------
    trunk/blender/source/blender/bmesh/operators/bmo_beautify.c
    trunk/blender/source/blender/editors/mesh/editmesh_add.c
    trunk/blender/source/blender/editors/mesh/editmesh_tools.c
    trunk/blender/source/blender/editors/mesh/editmesh_utils.c
    trunk/blender/source/blender/editors/mesh/mesh_intern.h

Modified: trunk/blender/source/blender/bmesh/operators/bmo_beautify.c
===================================================================
--- trunk/blender/source/blender/bmesh/operators/bmo_beautify.c	2013-07-25 06:07:19 UTC (rev 58591)
+++ trunk/blender/source/blender/bmesh/operators/bmo_beautify.c	2013-07-25 07:00:07 UTC (rev 58592)
@@ -415,9 +415,9 @@
 
 		/* edge is manifold and can be rotated */
 		if (BM_edge_rotate_check(e) &&
-			/* faces are tagged */
-			BMO_elem_flag_test(bm, e->l->f, FACE_MARK) &&
-			BMO_elem_flag_test(bm, e->l->radial_next->f, FACE_MARK))
+		    /* faces are tagged */
+		    BMO_elem_flag_test(bm, e->l->f, FACE_MARK) &&
+		    BMO_elem_flag_test(bm, e->l->radial_next->f, FACE_MARK))
 		{
 			BM_elem_index_set(e, edge_array_len);  /* set_dirty */
 			BM_elem_flag_enable(e, BM_ELEM_TAG);

Modified: trunk/blender/source/blender/editors/mesh/editmesh_add.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/editmesh_add.c	2013-07-25 06:07:19 UTC (rev 58591)
+++ trunk/blender/source/blender/editors/mesh/editmesh_add.c	2013-07-25 07:00:07 UTC (rev 58592)
@@ -118,9 +118,10 @@
 	obedit = make_prim_init(C, CTX_DATA_(BLF_I18NCONTEXT_ID_MESH, "Plane"), &dia, mat, &was_editmode, loc, rot, layer);
 	em = BKE_editmesh_from_object(obedit);
 
-	if (!EDBM_op_call_and_selectf(em, op, "verts.out",
-	                              "create_grid x_segments=%i y_segments=%i size=%f matrix=%m4",
-	                              1, 1, RNA_float_get(op->ptr, "radius"), mat))
+	if (!EDBM_op_call_and_selectf(
+	        em, op, "verts.out", false,
+	        "create_grid x_segments=%i y_segments=%i size=%f matrix=%m4",
+	        1, 1, RNA_float_get(op->ptr, "radius"), mat))
 	{
 		return OPERATOR_CANCELLED;
 	}
@@ -162,8 +163,10 @@
 	obedit = make_prim_init(C, CTX_DATA_(BLF_I18NCONTEXT_ID_MESH, "Cube"), &dia, mat, &was_editmode, loc, rot, layer);
 	em = BKE_editmesh_from_object(obedit);
 
-	if (!EDBM_op_call_and_selectf(em, op, "verts.out", "create_cube matrix=%m4 size=%f",
-	                              mat, RNA_float_get(op->ptr, "radius") * 2.0f))
+	if (!EDBM_op_call_and_selectf(
+	        em, op, "verts.out", false,
+	        "create_cube matrix=%m4 size=%f",
+	        mat, RNA_float_get(op->ptr, "radius") * 2.0f))
 	{
 		return OPERATOR_CANCELLED;
 	}
@@ -216,10 +219,11 @@
 	obedit = make_prim_init(C, CTX_DATA_(BLF_I18NCONTEXT_ID_MESH, "Circle"), &dia, mat, &was_editmode, loc, rot, layer);
 	em = BKE_editmesh_from_object(obedit);
 
-	if (!EDBM_op_call_and_selectf(em, op, "verts.out",
-	                              "create_circle segments=%i diameter=%f cap_ends=%b cap_tris=%b matrix=%m4",
-	                              RNA_int_get(op->ptr, "vertices"), RNA_float_get(op->ptr, "radius"),
-	                              cap_end, cap_tri, mat))
+	if (!EDBM_op_call_and_selectf(
+	        em, op, "verts.out", false,
+	        "create_circle segments=%i diameter=%f cap_ends=%b cap_tris=%b matrix=%m4",
+	        RNA_int_get(op->ptr, "vertices"), RNA_float_get(op->ptr, "radius"),
+	        cap_end, cap_tri, mat))
 	{
 		return OPERATOR_CANCELLED;
 	}
@@ -269,7 +273,7 @@
 	em = BKE_editmesh_from_object(obedit);
 
 	if (!EDBM_op_call_and_selectf(
-	        em, op, "verts.out",
+	        em, op, "verts.out", false,
 	        "create_cone segments=%i diameter1=%f diameter2=%f cap_ends=%b cap_tris=%b depth=%f matrix=%m4",
 	        RNA_int_get(op->ptr, "vertices"),
 	        RNA_float_get(op->ptr, "radius"),
@@ -329,7 +333,7 @@
 	em = BKE_editmesh_from_object(obedit);
 
 	if (!EDBM_op_call_and_selectf(
-	        em, op, "verts.out",
+	        em, op, "verts.out", false,
 	        "create_cone segments=%i diameter1=%f diameter2=%f cap_ends=%b cap_tris=%b depth=%f matrix=%m4",
 	        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))
@@ -385,11 +389,12 @@
 	obedit = make_prim_init(C, CTX_DATA_(BLF_I18NCONTEXT_ID_MESH, "Grid"), &dia, mat, &was_editmode, loc, rot, layer);
 	em = BKE_editmesh_from_object(obedit);
 
-	if (!EDBM_op_call_and_selectf(em, op, "verts.out",
-	                              "create_grid x_segments=%i y_segments=%i size=%f matrix=%m4",
-	                              RNA_int_get(op->ptr, "x_subdivisions"),
-	                              RNA_int_get(op->ptr, "y_subdivisions"),
-	                              RNA_float_get(op->ptr, "radius"), mat))
+	if (!EDBM_op_call_and_selectf(
+	        em, op, "verts.out", false,
+	        "create_grid x_segments=%i y_segments=%i size=%f matrix=%m4",
+	        RNA_int_get(op->ptr, "x_subdivisions"),
+	        RNA_int_get(op->ptr, "y_subdivisions"),
+	        RNA_float_get(op->ptr, "radius"), mat))
 	{
 		return OPERATOR_CANCELLED;
 	}
@@ -444,7 +449,10 @@
 
 	em = BKE_editmesh_from_object(obedit);
 
-	if (!EDBM_op_call_and_selectf(em, op, "verts.out", "create_monkey matrix=%m4", mat)) {
+	if (!EDBM_op_call_and_selectf(
+	        em, op, "verts.out",  false,
+	        "create_monkey matrix=%m4", mat))
+	{
 		return OPERATOR_CANCELLED;
 	}
 
@@ -485,10 +493,11 @@
 	obedit = make_prim_init(C, CTX_DATA_(BLF_I18NCONTEXT_ID_MESH, "Sphere"), &dia, mat, &was_editmode, loc, rot, layer);
 	em = BKE_editmesh_from_object(obedit);
 
-	if (!EDBM_op_call_and_selectf(em, op, "verts.out",
-	                              "create_uvsphere u_segments=%i v_segments=%i diameter=%f matrix=%m4",
-	                              RNA_int_get(op->ptr, "segments"), RNA_int_get(op->ptr, "ring_count"),
-	                              RNA_float_get(op->ptr, "size"), mat))
+	if (!EDBM_op_call_and_selectf(
+	        em, op, "verts.out", false,
+	        "create_uvsphere u_segments=%i v_segments=%i diameter=%f matrix=%m4",
+	        RNA_int_get(op->ptr, "segments"), RNA_int_get(op->ptr, "ring_count"),
+	        RNA_float_get(op->ptr, "size"), mat))
 	{
 		return OPERATOR_CANCELLED;
 	}
@@ -538,7 +547,7 @@
 	em = BKE_editmesh_from_object(obedit);
 
 	if (!EDBM_op_call_and_selectf(
-	        em, op, "verts.out",
+	        em, op, "verts.out", false,
 	        "create_icosphere subdivisions=%i diameter=%f matrix=%m4",
 	        RNA_int_get(op->ptr, "subdivisions"),
 	        RNA_float_get(op->ptr, "size"), mat))

Modified: trunk/blender/source/blender/editors/mesh/editmesh_tools.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/editmesh_tools.c	2013-07-25 06:07:19 UTC (rev 58591)
+++ trunk/blender/source/blender/editors/mesh/editmesh_tools.c	2013-07-25 07:00:07 UTC (rev 58592)
@@ -2759,8 +2759,13 @@
 	Object *obedit = CTX_data_edit_object(C);
 	BMEditMesh *em = BKE_editmesh_from_object(obedit);
 
-	if (!EDBM_op_callf(em, op, "beautify_fill faces=%hf edges=ae", BM_ELEM_SELECT))
+	if (!EDBM_op_call_and_selectf(
+	        em, op, "geom.out", true,
+	        "beautify_fill faces=%hf edges=ae",
+	        BM_ELEM_SELECT))
+	{
 		return OPERATOR_CANCELLED;
+	}
 
 	EDBM_update_generic(em, true, true);
 	
@@ -2855,11 +2860,14 @@
 	EDBM_op_init(em, &bmop, op, "triangulate faces=%hf use_beauty=%b", BM_ELEM_SELECT, use_beauty);
 	BMO_op_exec(em->bm, &bmop);
 
+	BMO_slot_buffer_hflag_enable(em->bm, bmop.slots_out, "faces.out", BM_FACE, BM_ELEM_SELECT, true);
+
 	/* now call beauty fill */
 	if (use_beauty) {
-		EDBM_op_callf(em, op,
-		              "beautify_fill faces=%S edges=%S",
-		              &bmop, "faces.out", &bmop, "edges.out");
+		EDBM_op_call_and_selectf(
+		            em, op, "geom.out", true,
+		            "beautify_fill faces=%S edges=%S",
+		            &bmop, "faces.out", &bmop, "edges.out");
 	}
 
 	if (!EDBM_op_finish(em, &bmop, op, true)) {
@@ -3057,7 +3065,6 @@
 	Object *obedit = CTX_data_edit_object(C);
 	BMEditMesh *em = BKE_editmesh_from_object(obedit);
 	BMesh *bm = em->bm;
-	BMOperator bmop;
 	const float angle_limit = RNA_float_get(op->ptr, "angle_limit");
 	const bool use_dissolve_boundaries = RNA_boolean_get(op->ptr, "use_dissolve_boundaries");
 	const int delimit = RNA_enum_get(op->ptr, "delimit");
@@ -3095,14 +3102,10 @@
 		dissolve_flag = BM_ELEM_SELECT;
 	}
 
-	EDBM_op_init(em, &bmop, op,
-	             "dissolve_limit edges=%he verts=%hv angle_limit=%f use_dissolve_boundaries=%b delimit=%i",
-	             dissolve_flag, dissolve_flag, angle_limit, use_dissolve_boundaries, delimit);
-	BMO_op_exec(em->bm, &bmop);
-	BMO_slot_buffer_hflag_enable(em->bm, bmop.slots_out, "region.out", BM_FACE, BM_ELEM_SELECT, true);
-	if (!EDBM_op_finish(em, &bmop, op, true)) {
-		return OPERATOR_CANCELLED;
-	}
+	EDBM_op_call_and_selectf(
+	            em, op, "region.out", true,
+	            "dissolve_limit edges=%he verts=%hv angle_limit=%f use_dissolve_boundaries=%b delimit=%i",
+	            dissolve_flag, dissolve_flag, angle_limit, use_dissolve_boundaries, delimit);
 
 	EDBM_update_generic(em, true, true);
 

Modified: trunk/blender/source/blender/editors/mesh/editmesh_utils.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/editmesh_utils.c	2013-07-25 06:07:19 UTC (rev 58591)
+++ trunk/blender/source/blender/editors/mesh/editmesh_utils.c	2013-07-25 07:00:07 UTC (rev 58592)
@@ -270,7 +270,9 @@
 	return EDBM_op_finish(em, &bmop, op, true);
 }
 
-bool EDBM_op_call_and_selectf(BMEditMesh *em, wmOperator *op, const char *select_slot_out, const char *fmt, ...)
+bool EDBM_op_call_and_selectf(BMEditMesh *em, wmOperator *op,
+                              const char *select_slot_out, const bool select_extend,
+                              const char *fmt, ...)
 {
 	BMOpSlot *slot_select_out;
 	BMesh *bm = em->bm;
@@ -294,8 +296,11 @@
 
 	slot_select_out = BMO_slot_get(bmop.slots_out, select_slot_out);
 	hflag = slot_select_out->slot_subtype.elem & BM_ALL_NOLOOP;
+	BLI_assert(hflag != 0);
 
-	BM_mesh_elem_hflag_disable_all(em->bm, BM_VERT | BM_EDGE | BM_FACE, BM_ELEM_SELECT, false);
+	if (select_extend == false) {
+		BM_mesh_elem_hflag_disable_all(em->bm, BM_VERT | BM_EDGE | BM_FACE, BM_ELEM_SELECT, false);
+	}
 
 	BMO_slot_buffer_hflag_enable(em->bm, bmop.slots_out, select_slot_out, hflag, BM_ELEM_SELECT, true);
 

Modified: trunk/blender/source/blender/editors/mesh/mesh_intern.h
===================================================================
--- trunk/blender/source/blender/editors/mesh/mesh_intern.h	2013-07-25 06:07:19 UTC (rev 58591)

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list