[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [52589] trunk/blender/source/blender: bmesh/py operator api:

Campbell Barton ideasman42 at gmail.com
Tue Nov 27 01:51:04 CET 2012


Revision: 52589
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=52589
Author:   campbellbarton
Date:     2012-11-27 00:50:59 +0000 (Tue, 27 Nov 2012)
Log Message:
-----------
bmesh/py operator api:
add type checking for element buffers, there was nothing stopping python from passing any element type into an argument when in some cases only verts/edges/faces were expected.
now operator args define which types they support.

Modified Paths:
--------------
    trunk/blender/source/blender/bmesh/bmesh_class.h
    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_operator_api_inline.h
    trunk/blender/source/blender/bmesh/intern/bmesh_operators.c
    trunk/blender/source/blender/bmesh/operators/bmo_dupe.c
    trunk/blender/source/blender/bmesh/operators/bmo_extrude.c
    trunk/blender/source/blender/bmesh/operators/bmo_mirror.c
    trunk/blender/source/blender/bmesh/operators/bmo_subdivide.c
    trunk/blender/source/blender/bmesh/operators/bmo_utils.c
    trunk/blender/source/blender/editors/mesh/editmesh_knife.c
    trunk/blender/source/blender/editors/mesh/editmesh_select.c
    trunk/blender/source/blender/editors/mesh/editmesh_slide.c
    trunk/blender/source/blender/editors/mesh/editmesh_tools.c
    trunk/blender/source/blender/editors/mesh/editmesh_utils.c
    trunk/blender/source/blender/python/bmesh/bmesh_py_ops.c

Modified: trunk/blender/source/blender/bmesh/bmesh_class.h
===================================================================
--- trunk/blender/source/blender/bmesh/bmesh_class.h	2012-11-26 23:18:04 UTC (rev 52588)
+++ trunk/blender/source/blender/bmesh/bmesh_class.h	2012-11-27 00:50:59 UTC (rev 52589)
@@ -226,6 +226,7 @@
 };
 
 #define BM_ALL (BM_VERT | BM_EDGE | BM_LOOP | BM_FACE)
+#define BM_ALL_NOLOOP (BM_VERT | BM_EDGE | BM_FACE)
 
 /* BMHeader->hflag (char) */
 enum {

Modified: trunk/blender/source/blender/bmesh/intern/bmesh_opdefines.c
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_opdefines.c	2012-11-26 23:18:04 UTC (rev 52588)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_opdefines.c	2012-11-27 00:50:59 UTC (rev 52589)
@@ -100,7 +100,7 @@
 static BMOpDefine bmo_smooth_vert_def = {
 	"smooth_vert",
 	/* slots_in */
-	{{"verts", BMO_OP_SLOT_ELEMENT_BUF},    /* input vertices */
+	{{"verts", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}},    /* input vertices */
 	 {"mirror_clip_x", BMO_OP_SLOT_BOOL},   /* set vertices close to the x axis before the operation to 0 */
 	 {"mirror_clip_y", BMO_OP_SLOT_BOOL},   /* set vertices close to the y axis before the operation to 0 */
 	 {"mirror_clip_z", BMO_OP_SLOT_BOOL},   /* set vertices close to the z axis before the operation to 0 */
@@ -123,7 +123,7 @@
 static BMOpDefine bmo_smooth_laplacian_vert_def = {
 	"smooth_laplacian_vert",
 	/* slots_in */
-	{{"verts", BMO_OP_SLOT_ELEMENT_BUF},    /* input vertices */
+	{{"verts", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}},    /* input vertices */
 	 {"lambda", BMO_OP_SLOT_FLT},           /* lambda param */
 	 {"lambda_border", BMO_OP_SLOT_FLT},    /* lambda param in border */
 	 {"use_x", BMO_OP_SLOT_BOOL},           /* Smooth object along X axis */
@@ -146,7 +146,7 @@
 static BMOpDefine bmo_recalc_face_normals_def = {
 	"recalc_face_normals",
 	/* slots_in */
-	{{"faces", BMO_OP_SLOT_ELEMENT_BUF},
+	{{"faces", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}},
 	 {"use_flip", BMO_OP_SLOT_BOOL},        /* internal flag, used by bmesh_rationalize_normals */
 	 {{'\0'}},
 	},
@@ -168,13 +168,13 @@
 static BMOpDefine bmo_region_extend_def = {
 	"region_extend",
 	/* slots_in */
-	{{"geom", BMO_OP_SLOT_ELEMENT_BUF},     /* input geometry */
+	{{"geom", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}},     /* input geometry */
 	 {"use_constrict", BMO_OP_SLOT_BOOL},   /* find boundary inside the regions, not outside. */
 	 {"use_faces", BMO_OP_SLOT_BOOL},       /* extend from faces instead of edges */
 	 {{'\0'}},
 	},
 	/* slots_out */
-	{{"geom.out", BMO_OP_SLOT_ELEMENT_BUF}, /* output slot, computed boundary geometry. */
+	{{"geom.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, /* output slot, computed boundary geometry. */
 	 {{'\0'}},
 	},
 	bmo_region_extend_exec,
@@ -190,12 +190,12 @@
 static BMOpDefine bmo_rotate_edges_def = {
 	"rotate_edges",
 	/* slots_in */
-	{{"edges", BMO_OP_SLOT_ELEMENT_BUF},    /* input edges */
+	{{"edges", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}},    /* input edges */
 	 {"use_ccw", BMO_OP_SLOT_BOOL},         /* rotate edge counter-clockwise if true, othewise clockwise */
 	 {{'\0'}},
 	},
 	/* slots_out */
-	{{"edges.out", BMO_OP_SLOT_ELEMENT_BUF}, /* newly spun edges */
+	{{"edges.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, /* newly spun edges */
 	 {{'\0'}},
 	},
 	bmo_rotate_edges_exec,
@@ -211,7 +211,7 @@
 static BMOpDefine bmo_reverse_faces_def = {
 	"reverse_faces",
 	/* slots_in */
-	{{"faces", BMO_OP_SLOT_ELEMENT_BUF},    /* input faces */
+	{{"faces", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}},    /* input faces */
 	 {{'\0'}},
 	},
 	{{{'\0'}}},  /* no output */
@@ -228,12 +228,12 @@
 static BMOpDefine bmo_bisect_edges_def = {
 	"bisect_edges",
 	/* slots_in */
-	{{"edges", BMO_OP_SLOT_ELEMENT_BUF}, /* input edges */
+	{{"edges", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, /* input edges */
 	 {"cuts", BMO_OP_SLOT_INT}, /* number of cuts */
 	 {{'\0'}},
 	},
 	/* slots_out */
-	{{"geom_split.out", BMO_OP_SLOT_ELEMENT_BUF}, /* newly created vertices and edges */
+	{{"geom_split.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, /* newly created vertices and edges */
 	 {{'\0'}},
 	},
 	bmo_bisect_edges_exec,
@@ -251,7 +251,7 @@
 static BMOpDefine bmo_mirror_def = {
 	"mirror",
 	/* slots_in */
-	{{"geom", BMO_OP_SLOT_ELEMENT_BUF},     /* input geometry */
+	{{"geom", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}},     /* input geometry */
 	 {"mat",         BMO_OP_SLOT_MAT},      /* matrix defining the mirror transformation */
 	 {"merge_dist", BMO_OP_SLOT_FLT},       /* maximum distance for merging.  does no merging if 0. */
 	 {"axis",         BMO_OP_SLOT_INT},     /* the axis to use, 0, 1, or 2 for x, y, z */
@@ -260,7 +260,7 @@
 	 {{'\0'}},
 	},
 	/* slots_out */
-	{{"geom.out", BMO_OP_SLOT_ELEMENT_BUF}, /* output geometry, mirrored */
+	{{"geom.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, /* output geometry, mirrored */
 	 {{'\0'}},
 	},
 	bmo_mirror_exec,
@@ -279,13 +279,13 @@
 static BMOpDefine bmo_find_doubles_def = {
 	"find_doubles",
 	/* slots_in */
-	{{"verts", BMO_OP_SLOT_ELEMENT_BUF}, /* input vertices */
-	 {"keep_verts", BMO_OP_SLOT_ELEMENT_BUF}, /* list of verts to keep */
+	{{"verts", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, /* input vertices */
+	 {"keep_verts", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, /* list of verts to keep */
 	 {"dist",         BMO_OP_SLOT_FLT}, /* minimum distance */
 	 {{'\0'}},
 	},
 	/* slots_out */
-	{{"targetmap.out", BMO_OP_SLOT_MAPPING, BMO_OP_SLOT_SUBTYPE_MAP_ELEM},
+	{{"targetmap.out", BMO_OP_SLOT_MAPPING, {BMO_OP_SLOT_SUBTYPE_MAP_ELEM}},
 	 {{'\0'}},
 	},
 	bmo_find_doubles_exec,
@@ -301,7 +301,7 @@
 static BMOpDefine bmo_remove_doubles_def = {
 	"remove_doubles",
 	/* slots_in */
-	{{"verts", BMO_OP_SLOT_ELEMENT_BUF}, /* input verts */
+	{{"verts", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, /* input verts */
 	 {"dist",         BMO_OP_SLOT_FLT}, /* minimum distance */
 	 {{'\0'}},
 	},
@@ -320,7 +320,7 @@
 static BMOpDefine bmo_automerge_def = {
 	"automerge",
 	/* slots_in */
-	{{"verts", BMO_OP_SLOT_ELEMENT_BUF}, /* input verts */
+	{{"verts", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, /* input verts */
 	 {"dist",         BMO_OP_SLOT_FLT}, /* minimum distance */
 	 {{'\0'}},
 	},
@@ -337,7 +337,7 @@
 static BMOpDefine bmo_collapse_def = {
 	"collapse",
 	/* slots_in */
-	{{"edges", BMO_OP_SLOT_ELEMENT_BUF}, /* input edge */
+	{{"edges", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, /* input edge */
 	 {{'\0'}},
 	},
 	{{{'\0'}}},  /* no output */
@@ -354,8 +354,8 @@
 static BMOpDefine bmo_pointmerge_facedata_def = {
 	"pointmerge_facedata",
 	/* slots_in */
-	{{"verts", BMO_OP_SLOT_ELEMENT_BUF},    /* input vertices */
-	 {"snapv", BMO_OP_SLOT_ELEMENT_BUF},    /* snap vertex */
+	{{"verts", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}},    /* input vertices */
+	 {"snapv", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BMO_OP_SLOT_SUBTYPE_ELEM_IS_SINGLE}},    /* snap vertex */
 	 {{'\0'}},
 	},
 	{{{'\0'}}},  /* no output */
@@ -373,7 +373,7 @@
 static BMOpDefine bmo_average_vert_facedata_def = {
 	"average_vert_facedata",
 	/* slots_in */
-	{{"verts", BMO_OP_SLOT_ELEMENT_BUF}, /* input vertice */
+	{{"verts", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, /* input vertice */
 	 {{'\0'}},
 	},
 	{{{'\0'}}},  /* no output */
@@ -389,7 +389,7 @@
 static BMOpDefine bmo_pointmerge_def = {
 	"pointmerge",
 	/* slots_in */
-	{{"verts", BMO_OP_SLOT_ELEMENT_BUF}, /* input vertice */
+	{{"verts", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, /* input vertice */
 	 {"merge_co",         BMO_OP_SLOT_VEC},
 	 {{'\0'}},
 	},
@@ -406,7 +406,7 @@
 static BMOpDefine bmo_collapse_uvs_def = {
 	"collapse_uvs",
 	/* slots_in */
-	{{"edges", BMO_OP_SLOT_ELEMENT_BUF}, /* input edge */
+	{{"edges", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, /* input edge */
 	 {{'\0'}},
 	},
 	{{{'\0'}}},  /* no output */
@@ -425,7 +425,7 @@
 	"weld_verts",
 	/* slots_in */
 	/* maps welded vertices to verts they should weld to */
-	{{"targetmap", BMO_OP_SLOT_MAPPING, BMO_OP_SLOT_SUBTYPE_MAP_ELEM},
+	{{"targetmap", BMO_OP_SLOT_MAPPING, {BMO_OP_SLOT_SUBTYPE_MAP_ELEM}},
 	 {{'\0'}},
 	},
 	{{{'\0'}}},  /* no output */
@@ -446,7 +446,7 @@
 	 {{'\0'}},
 	},
 	/* slots_out */
-	{{"vert.out", BMO_OP_SLOT_ELEMENT_BUF},  /* the new vert */
+	{{"vert.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}},  /* the new vert */
 	 {{'\0'}},
 	},
 	bmo_create_vert_exec,
@@ -462,7 +462,7 @@
 static BMOpDefine bmo_join_triangles_def = {
 	"join_triangles",
 	/* slots_in */
-	{{"faces", BMO_OP_SLOT_ELEMENT_BUF},    /* input geometry. */
+	{{"faces", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}},    /* input geometry. */
 	 {"cmp_sharp", BMO_OP_SLOT_BOOL},
 	 {"cmp_uvs", BMO_OP_SLOT_BOOL},
 	 {"cmp_vcols", BMO_OP_SLOT_BOOL},
@@ -471,7 +471,7 @@
 	 {{'\0'}},
 	},
 	/* slots_out */
-	{{"faces.out", BMO_OP_SLOT_ELEMENT_BUF},  /* joined faces */
+	{{"faces.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}},  /* joined faces */
 	 {{'\0'}},
 	},
 	bmo_join_triangles_exec,
@@ -492,15 +492,15 @@
 static BMOpDefine bmo_contextual_create_def = {
 	"contextual_create",
 	/* slots_in */
-	{{"geom", BMO_OP_SLOT_ELEMENT_BUF},     /* input geometry. */
+	{{"geom", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}},     /* input geometry. */
 	 {"mat_nr",         BMO_OP_SLOT_INT},   /* material to use */
 	 {"use_smooth",        BMO_OP_SLOT_BOOL}, /* smooth to use */
 	 {{'\0'}},
 	},
 	/* slots_out */
-	{{"faces.out", BMO_OP_SLOT_ELEMENT_BUF}, /* newly-made face(s) */
+	{{"faces.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, /* newly-made face(s) */
 	/* note, this is for stand-alone edges only, not edges which are apart of newly created faces */
-	 {"edges.out", BMO_OP_SLOT_ELEMENT_BUF}, /* newly-made edge(s) */
+	 {"edges.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, /* newly-made edge(s) */
 	 {{'\0'}},
 	},
 	bmo_contextual_create_exec,
@@ -513,13 +513,13 @@
 static BMOpDefine bmo_bridge_loops_def = {
 	"bridge_loops",
 	/* slots_in */
-	{{"edges", BMO_OP_SLOT_ELEMENT_BUF}, /* input edge */
+	{{"edges", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, /* input edge */
 	 {"use_merge",        BMO_OP_SLOT_BOOL},
 	 {"merge_factor",         BMO_OP_SLOT_FLT},
 	 {{'\0'}},
 	},
 	/* slots_out */
-	{{"faces.out", BMO_OP_SLOT_ELEMENT_BUF}, /* new faces */
+	{{"faces.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, /* new faces */
 	 {{'\0'}},
 	},
 	bmo_bridge_loops_exec,
@@ -529,20 +529,20 @@

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list