[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