diff options
author | Campbell Barton <ideasman42@gmail.com> | 2012-02-22 15:31:07 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2012-02-22 15:31:07 +0400 |
commit | 91353bc71685f04cb9e1596258165fc7b018d7af (patch) | |
tree | 2365b280232baa3363e503a98009dee4e7b254c1 /source/blender/bmesh/intern | |
parent | e0a6d273d015d1196661da010b676acdf5d4baf5 (diff) |
bmesh python api - add BMEdge.verts, also had to add VERTS_OF_EDGE iterator in bmesh's api.
Diffstat (limited to 'source/blender/bmesh/intern')
-rw-r--r-- | source/blender/bmesh/intern/bmesh_iterators.c | 24 | ||||
-rw-r--r-- | source/blender/bmesh/intern/bmesh_iterators_inline.c | 10 |
2 files changed, 33 insertions, 1 deletions
diff --git a/source/blender/bmesh/intern/bmesh_iterators.c b/source/blender/bmesh/intern/bmesh_iterators.c index 0c6ac24f456..083de99b7c4 100644 --- a/source/blender/bmesh/intern/bmesh_iterators.c +++ b/source/blender/bmesh/intern/bmesh_iterators.c @@ -354,6 +354,30 @@ void *bmiter__face_of_edge_step(BMIter *iter) } /* + * VERTS OF EDGE CALLBACKS + * + */ + +void bmiter__vert_of_edge_begin(BMIter *iter) +{ + init_iterator(iter); + iter->count = 0; +} + +void *bmiter__vert_of_edge_step(BMIter *iter) +{ + iter->count++; + switch (iter->count) { + case 1: + return iter->edata->v1; + case 2: + return iter->edata->v1; + default: + return NULL; + } +} + +/* * VERT OF FACE CALLBACKS * */ diff --git a/source/blender/bmesh/intern/bmesh_iterators_inline.c b/source/blender/bmesh/intern/bmesh_iterators_inline.c index bd2242c262b..e4ad53ee46d 100644 --- a/source/blender/bmesh/intern/bmesh_iterators_inline.c +++ b/source/blender/bmesh/intern/bmesh_iterators_inline.c @@ -62,7 +62,7 @@ BM_INLINE int BM_iter_init(BMIter *iter, BMesh *bm, const char itype, void *data iter->bm = bm; /* inlining optimizes out this switch when called with the defined type */ - switch (itype) { + switch ((BMIterType)itype) { case BM_VERTS_OF_MESH: iter->begin = bmiter__vert_of_mesh_begin; iter->step = bmiter__vert_of_mesh_step; @@ -99,6 +99,14 @@ BM_INLINE int BM_iter_init(BMIter *iter, BMesh *bm, const char itype, void *data iter->step = bmiter__loop_of_vert_step; iter->vdata = data; break; + case BM_VERTS_OF_EDGE: + if (!data) + return FALSE; + + iter->begin = bmiter__vert_of_edge_begin; + iter->step = bmiter__vert_of_edge_step; + iter->edata = data; + break; case BM_FACES_OF_EDGE: if (!data) return FALSE; |