[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [45868] trunk/blender/source/blender: code cleanup: bmesh subdivide code - BM_mesh_esubdivideflag() & "esubd" bmesh operator was passing a flag about in a fairly confusing way.

Campbell Barton ideasman42 at gmail.com
Mon Apr 23 05:43:06 CEST 2012


Revision: 45868
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=45868
Author:   campbellbarton
Date:     2012-04-23 03:43:02 +0000 (Mon, 23 Apr 2012)
Log Message:
-----------
code cleanup: bmesh subdivide code - BM_mesh_esubdivideflag() & "esubd" bmesh operator was passing a flag about in a fairly confusing way.

since we will eventually have python bmesh operator access better expose this as multiple booleans.

remove remaining editbutflag's

Modified Paths:
--------------
    trunk/blender/source/blender/bmesh/intern/bmesh_opdefines.c
    trunk/blender/source/blender/bmesh/intern/bmesh_operator_api.h
    trunk/blender/source/blender/bmesh/intern/bmesh_operators.h
    trunk/blender/source/blender/bmesh/operators/bmo_primitive.c
    trunk/blender/source/blender/bmesh/operators/bmo_subdivide.c
    trunk/blender/source/blender/bmesh/operators/bmo_subdivide.h
    trunk/blender/source/blender/editors/include/ED_mesh.h
    trunk/blender/source/blender/editors/mesh/editmesh_loopcut.c
    trunk/blender/source/blender/editors/mesh/editmesh_tools.c
    trunk/blender/source/blender/editors/mesh/mesh_intern.h

Modified: trunk/blender/source/blender/bmesh/intern/bmesh_opdefines.c
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_opdefines.c	2012-04-23 02:48:05 UTC (rev 45867)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_opdefines.c	2012-04-23 03:43:02 UTC (rev 45868)
@@ -694,10 +694,9 @@
 static BMOpDefine bmo_esubd_def = {
 	"esubd",
 	{{BMO_OP_SLOT_ELEMENT_BUF, "edges"},
-	 {BMO_OP_SLOT_INT, "numcuts"},
 	 {BMO_OP_SLOT_FLT, "smooth"},
 	 {BMO_OP_SLOT_FLT, "fractal"},
-	 {BMO_OP_SLOT_INT, "beauty"},
+	 {BMO_OP_SLOT_INT, "numcuts"},
 	 {BMO_OP_SLOT_INT, "seed"},
 	 {BMO_OP_SLOT_MAPPING, "custompatterns"},
 	 {BMO_OP_SLOT_MAPPING, "edgepercents"},
@@ -707,9 +706,10 @@
 	 {BMO_OP_SLOT_ELEMENT_BUF, "outsplit"},
 	 {BMO_OP_SLOT_ELEMENT_BUF, "geomout"}, /* contains all output geometr */
 
-	 {BMO_OP_SLOT_INT,  "quadcornertype"}, //quad corner type, see bmesh_operators.h
-	 {BMO_OP_SLOT_BOOL, "gridfill"}, //fill in fully-selected faces with a grid
-	 {BMO_OP_SLOT_BOOL, "singleedge"}, //tessellate the case of one edge selected in a quad or triangle
+	 {BMO_OP_SLOT_INT,  "quadcornertype"}, /* quad corner type, see bmesh_operators.h */
+	 {BMO_OP_SLOT_BOOL, "use_gridfill"},   /* fill in fully-selected faces with a grid */
+	 {BMO_OP_SLOT_BOOL, "use_singleedge"}, /* tessellate the case of one edge selected in a quad or triangle */
+	 {BMO_OP_SLOT_BOOL, "use_sphere"},     /* for making new primitives only */
 
 	 {0} /* null-terminating sentinel */,
 	},

Modified: trunk/blender/source/blender/bmesh/intern/bmesh_operator_api.h
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_operator_api.h	2012-04-23 02:48:05 UTC (rev 45867)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_operator_api.h	2012-04-23 03:43:02 UTC (rev 45868)
@@ -242,7 +242,7 @@
 int BMO_op_initf(BMesh *bm, BMOperator *op, const char *fmt, ...);
 
 /* va_list version, used to implement the above two functions,
- * plus EDBM_op_callf in bmeshutils.c. */
+ * plus EDBM_op_callf in editmesh_utils.c. */
 int BMO_op_vinitf(BMesh *bm, BMOperator *op, const char *fmt, va_list vlist);
 
 /* test whether a named slot exists */

Modified: trunk/blender/source/blender/bmesh/intern/bmesh_operators.h
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_operators.h	2012-04-23 02:48:05 UTC (rev 45867)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_operators.h	2012-04-23 03:43:02 UTC (rev 45868)
@@ -90,9 +90,12 @@
 
 struct Object;
 
-void BM_mesh_esubdivideflag(struct Object *obedit, BMesh *bm, int flag, float smooth,
-                            float fractal, int beauty, int numcuts, int seltype,
-                            int cornertype, int singleedge, int gridfill, int seed);
+void BM_mesh_esubdivide(BMesh *bm, const char edge_hflag,
+                        float smooth, float fractal,
+                        int numcuts,
+                        int seltype, int cornertype,
+                        const short use_singleedge, const short use_gridfill,
+                        int seed);
 
 #include "intern/bmesh_operator_api_inline.h"
 

Modified: trunk/blender/source/blender/bmesh/operators/bmo_primitive.c
===================================================================
--- trunk/blender/source/blender/bmesh/operators/bmo_primitive.c	2012-04-23 02:48:05 UTC (rev 45867)
+++ trunk/blender/source/blender/bmesh/operators/bmo_primitive.c	2012-04-23 03:43:02 UTC (rev 45868)
@@ -428,8 +428,13 @@
 		BMOperator bmop;
 
 		BMO_op_initf(bm, &bmop,
-		             "esubd edges=%fe smooth=%f numcuts=%i gridfill=%b beauty=%i",
-		             EDGE_MARK, dia, (1 << (subdiv-1)) - 1, TRUE, B_SPHERE);
+		             "esubd edges=%fe "
+		             "smooth=%f "
+		             "numcuts=%i "
+		             "use_gridfill=%b use_sphere=%b",
+		             EDGE_MARK, dia, (1 << (subdiv-1)) - 1,
+		             TRUE, TRUE);
+
 		BMO_op_exec(bm, &bmop);
 		BMO_slot_buffer_flag_enable(bm, &bmop, "geomout", BM_VERT, VERT_MARK);
 		BMO_slot_buffer_flag_enable(bm, &bmop, "geomout", BM_EDGE, EDGE_MARK);

Modified: trunk/blender/source/blender/bmesh/operators/bmo_subdivide.c
===================================================================
--- trunk/blender/source/blender/bmesh/operators/bmo_subdivide.c	2012-04-23 02:48:05 UTC (rev 45867)
+++ trunk/blender/source/blender/bmesh/operators/bmo_subdivide.c	2012-04-23 03:43:02 UTC (rev 45868)
@@ -111,7 +111,7 @@
 	copy_v3_v3(co, v->co);
 	copy_v3_v3(prev_co, co);
 
-	if (params->beauty & B_SMOOTH) {
+	if (params->use_smooth) {
 		/* we calculate an offset vector vec1[], to be added to *co */
 		float len, nor[3], nor1[3], nor2[3], smooth = params->smooth;
 
@@ -136,12 +136,12 @@
 
 		add_v3_v3(co, tvec);
 	}
-	else if (params->beauty & B_SPHERE) { /* subdivide sphere */
+	else if (params->use_sphere) { /* subdivide sphere */
 		normalize_v3(co);
 		mul_v3_fl(co, params->smooth);
 	}
 
-	if (params->beauty & B_FRACTAL) {
+	if (params->use_fractal) {
 		float len = len_v3v3(vsta->co, vend->co);
 		float vec2[3] = {0.0f, 0.0f, 0.0f}, co2[3];
 
@@ -690,7 +690,7 @@
 	BLI_array_declare(edges);
 	BLI_array_declare(verts);
 	float smooth, fractal;
-	int beauty, cornertype, singleedge, gridfill;
+	int use_sphere, cornertype, use_singleedge, use_gridfill;
 	int skey, seed, i, j, matched, a, b, numcuts, totesel;
 	
 	BMO_slot_buffer_flag_enable(bm, op, "edges", BM_EDGE, SUBD_SPLIT);
@@ -699,10 +699,11 @@
 	seed = BMO_slot_int_get(op, "seed");
 	smooth = BMO_slot_float_get(op, "smooth");
 	fractal = BMO_slot_float_get(op, "fractal");
-	beauty = BMO_slot_int_get(op, "beauty");
 	cornertype = BMO_slot_int_get(op, "quadcornertype");
-	singleedge = BMO_slot_bool_get(op, "singleedge");
-	gridfill = BMO_slot_bool_get(op, "gridfill");
+
+	use_singleedge = BMO_slot_bool_get(op, "use_singleedge");
+	use_gridfill   = BMO_slot_bool_get(op, "use_gridfill");
+	use_sphere     = BMO_slot_bool_get(op, "use_sphere");
 	
 	BLI_srandom(seed);
 	
@@ -720,7 +721,7 @@
 			break;
 	}
 	
-	if (singleedge) {
+	if (use_singleedge) {
 		patterns[0] = &quad_1edge;
 		patterns[2] = &tri_1edge;
 	}
@@ -729,7 +730,7 @@
 		patterns[2] = NULL;
 	}
 
-	if (gridfill) {
+	if (use_gridfill) {
 		patterns[3] = &quad_4edge;
 		patterns[5] = &tri_3edge;
 	}
@@ -755,7 +756,9 @@
 	params.smooth = smooth;
 	params.seed = seed;
 	params.fractal = fractal;
-	params.beauty = beauty;
+	params.use_smooth  = (smooth  != 0.0f);
+	params.use_fractal = (fractal != 0.0f);
+	params.use_sphere  = use_sphere;
 	params.origkey = skey;
 	params.off[0] = (float)BLI_drand() * 200.0f;
 	params.off[1] = (float)BLI_drand() * 200.0f;
@@ -1023,25 +1026,35 @@
 }
 
 /* editmesh-emulating function */
-void BM_mesh_esubdivideflag(Object *UNUSED(obedit), BMesh *bm, int flag, float smooth,
-                            float fractal, int beauty, int numcuts,
-                            int seltype, int cornertype, int singleedge,
-                            int gridfill, int seed)
+void BM_mesh_esubdivide(BMesh *bm, const char edge_hflag,
+                        float smooth, float fractal,
+                        int numcuts,
+                        int seltype, int cornertype,
+                        const short use_singleedge, const short use_gridfill,
+                        int seed)
 {
 	BMOperator op;
 	
-	BMO_op_initf(bm, &op, "esubd edges=%he smooth=%f fractal=%f "
-	             "beauty=%i numcuts=%i quadcornertype=%i singleedge=%b "
-	             "gridfill=%b seed=%i",
-	             flag, smooth, fractal, beauty, numcuts,
-	             cornertype, singleedge, gridfill, seed);
+	/* use_sphere isnt exposed here since its only used for new primitives */
+	BMO_op_initf(bm, &op,
+	             "esubd edges=%he "
+	             "smooth=%f fractal=%f "
+	             "numcuts=%i "
+	             "quadcornertype=%i "
+	             "use_singleedge=%b use_gridfill=%b "
+	             "seed=%i",
+	             edge_hflag,
+	             smooth, fractal,
+	             numcuts,
+	             cornertype,
+	             use_singleedge, use_gridfill,
+	             seed);
 	
 	BMO_op_exec(bm, &op);
 	
 	if (seltype == SUBDIV_SELECT_INNER) {
 		BMOIter iter;
 		BMElem *ele;
-		// int i;
 
 		for (ele = BMO_iter_new(&iter, bm, &op, "outinner", BM_EDGE | BM_VERT); ele; ele = BMO_iter_step(&iter)) {
 			BM_elem_select_set(bm, ele, TRUE);
@@ -1050,7 +1063,6 @@
 	else if (seltype == SUBDIV_SELECT_LOOPCUT) {
 		BMOIter iter;
 		BMElem *ele;
-		// int i;
 		
 		/* deselect input */
 		BM_mesh_elem_hflag_disable_all(bm, BM_VERT | BM_EDGE | BM_FACE, BM_ELEM_SELECT, FALSE);

Modified: trunk/blender/source/blender/bmesh/operators/bmo_subdivide.h
===================================================================
--- trunk/blender/source/blender/bmesh/operators/bmo_subdivide.h	2012-04-23 02:48:05 UTC (rev 45867)
+++ trunk/blender/source/blender/bmesh/operators/bmo_subdivide.h	2012-04-23 03:43:02 UTC (rev 45868)
@@ -31,7 +31,10 @@
 	int numcuts;
 	float smooth;
 	float fractal;
-	int beauty;
+	//int beauty;
+	short use_smooth;
+	short use_sphere;
+	short use_fractal;
 	int seed;
 	int origkey; /* shapekey holding displaced vertex coordinates for current geometry */
 	BMOperator *op;

Modified: trunk/blender/source/blender/editors/include/ED_mesh.h
===================================================================
--- trunk/blender/source/blender/editors/include/ED_mesh.h	2012-04-23 02:48:05 UTC (rev 45867)
+++ trunk/blender/source/blender/editors/include/ED_mesh.h	2012-04-23 03:43:02 UTC (rev 45868)
@@ -71,17 +71,11 @@
 struct Object;
 struct rcti;
 
-/* editbutflag */
-#define B_SMOOTH            8
-#define B_FRACTAL           0x2000
-#define B_SPHERE            0x4000
-
 intptr_t    mesh_octree_table(struct Object *ob, struct BMEditMesh *em, float *co, char mode);
 int         mesh_mirrtopo_table(struct Object *ob, char mode);
 
-/* bmeshutils.c */
+/* editmesh_utils.c */
 
-
 /* retrieves mirrored cache vert, or NULL if there isn't one.
  * note: calling this without ensuring the mirror cache state
  * is bad.*/
@@ -282,11 +276,6 @@
 #define SUBDIV_SELECT_INNER_SEL 2
 #define SUBDIV_SELECT_LOOPCUT   3
 
-/* edge subdivide corner cut types */
-#define SUBDIV_CORNER_PATH      0
-#define SUBDIV_CORNER_INNERVERT 1
-#define SUBDIV_CORNER_FAN       2
-
 #ifdef __cplusplus
 }
 #endif


@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list