|
Blender
V2.93
|
#include "MEM_guardedalloc.h"#include "BLI_bitmap.h"#include "BLI_utildefines.h"#include "bmesh.h"#include "intern/bmesh_private.h"Go to the source code of this file.
Variables | |
| const char | bm_iter_itype_htype_map [BM_ITYPE_MAX] |
Functions to abstract looping over bmesh data structures.
See: bmesh_iterators_inlin.c too, some functions are here for speed reasons.
Definition in file bmesh_iterators.c.
| int BM_iter_as_array | ( | BMesh * | bm, |
| const char | itype, | ||
| void * | data, | ||
| void ** | array, | ||
| const int | len | ||
| ) |
Iterator as Array.
Sometimes its convenient to get the iterator as an array to avoid multiple calls to BM_iter_at_index.
Definition at line 107 of file bmesh_iterators.c.
References bm, BM_iter_new, data, itype, and len.
Referenced by BM_mesh_elem_table_ensure(), bm_vert_dissolve_fan(), edbm_rip_invoke__vert(), pbvh_bmesh_edge_loops(), quad_from_tris(), and skin_fix_hole_no_good_verts().
| void* BM_iter_as_arrayN | ( | BMesh * | bm, |
| const char | itype, | ||
| void * | data, | ||
| int * | r_len, | ||
| void ** | stack_array, | ||
| int | stack_array_size | ||
| ) |
Iterator as Array.
Allocates a new array, has the advantage that you don't need to know the size ahead of time.
Takes advantage of less common iterator usage to avoid counting twice, which you might end up doing when BM_iter_as_array is used.
Caller needs to free the array.
Definition at line 168 of file bmesh_iterators.c.
References BLI_assert, bm, BM_EDGES_OF_MESH, BM_FACES_OF_MESH, BM_iter_init(), BM_VERTS_OF_MESH, BMIter::count, data, itype, MEM_mallocN, NULL, BMesh::totedge, BMesh::totface, and BMesh::totvert.
Referenced by bevel_rebuild_existing_polygons(), and BM_mesh_decimate_dissolve().
| void* BM_iter_at_index | ( | BMesh * | bm, |
| const char | itype, | ||
| void * | data, | ||
| int | index | ||
| ) |
Definition at line 79 of file bmesh_iterators.c.
References bm, BM_iter_new, data, itype, and NULL.
Referenced by BM_uv_vert_map_create(), bm_vert_dissolve_fan(), bm_vert_loop_pair(), bpy_bmelemseq_subscript_int(), bridge_loop_pair(), mesh_separate_material(), stitch_init(), and uv_select_flush_from_tag_sticky_loc_internal().
| int BM_iter_elem_count_flag | ( | const char | itype, |
| void * | data, | ||
| const char | hflag, | ||
| const bool | value | ||
| ) |
Elem Iter Flag Count.
Counts how many flagged / unflagged items are found in this element.
Definition at line 313 of file bmesh_iterators.c.
References BM_elem_flag_test_bool, BM_ITER_ELEM, count, data, and itype.
Referenced by bm_vert_is_select_history_open().
| int BM_iter_mesh_bitmap_from_filter | ( | const char | itype, |
| BMesh * | bm, | ||
| BLI_bitmap * | bitmap, | ||
| bool(*)(BMElem *, void *user_data) | test_fn, | ||
| void * | user_data | ||
| ) |
Definition at line 251 of file bmesh_iterators.c.
References BLI_BITMAP_DISABLE, BLI_BITMAP_ENABLE, bm, BM_ITER_MESH_INDEX, itype, and user_data.
Referenced by snapEditMesh().
| int BM_iter_mesh_bitmap_from_filter_tessface | ( | BMesh * | bm, |
| BLI_bitmap * | bitmap, | ||
| bool(*)(BMFace *, void *user_data) | test_fn, | ||
| void * | user_data | ||
| ) |
Needed when we want to check faces, but return a loop aligned array.
Definition at line 278 of file bmesh_iterators.c.
References BLI_BITMAP_DISABLE, BLI_BITMAP_ENABLE, bm, BM_FACES_OF_MESH, BM_ITER_MESH_INDEX, BMFace::len, and user_data.
Referenced by raycastEditMesh().
| int BM_iter_mesh_count | ( | const char | itype, |
| BMesh * | bm | ||
| ) |
Utility function.
Definition at line 53 of file bmesh_iterators.c.
References BLI_assert, bm, BM_EDGES_OF_MESH, BM_FACES_OF_MESH, BM_VERTS_OF_MESH, count, itype, BMesh::totedge, BMesh::totface, and BMesh::totvert.
| int BM_iter_mesh_count_flag | ( | const char | itype, |
| BMesh * | bm, | ||
| const char | hflag, | ||
| const bool | value | ||
| ) |
Mesh Iter Flag Count.
Counts how many flagged / unflagged items are found in this mesh.
Definition at line 379 of file bmesh_iterators.c.
References bm, BM_elem_flag_test_bool, BM_ITER_MESH, count, and itype.
Referenced by bmo_collapse_uvs_exec(), and transform_convert_mesh_connectivity_distance().
| void bmiter__edge_of_face_begin | ( | struct BMIter__edge_of_face * | iter | ) |
Definition at line 673 of file bmesh_iterators.c.
References BM_FACE_FIRST_LOOP, BMIter__edge_of_face::l_first, BMIter__edge_of_face::l_next, and BMIter__edge_of_face::pdata.
Referenced by BM_iter_init().
| void* bmiter__edge_of_face_step | ( | struct BMIter__edge_of_face * | iter | ) |
Definition at line 678 of file bmesh_iterators.c.
References BMLoop::e, BMIter__edge_of_face::l_first, BMIter__edge_of_face::l_next, BMLoop::next, and NULL.
Referenced by BM_iter_init().
| void bmiter__edge_of_vert_begin | ( | struct BMIter__edge_of_vert * | iter | ) |
Definition at line 444 of file bmesh_iterators.c.
References BMVert::e, BMIter__edge_of_vert::e_first, BMIter__edge_of_vert::e_next, NULL, and BMIter__edge_of_vert::vdata.
Referenced by BM_iter_init().
| void* bmiter__edge_of_vert_step | ( | struct BMIter__edge_of_vert * | iter | ) |
Definition at line 456 of file bmesh_iterators.c.
References bmesh_disk_edge_next(), BMIter__edge_of_vert::e_first, BMIter__edge_of_vert::e_next, NULL, and BMIter__edge_of_vert::vdata.
Referenced by BM_iter_init().
| void bmiter__elem_of_mesh_begin | ( | struct BMIter__elem_of_mesh * | iter | ) |
Notes on iterator implementation:
Iterators keep track of the next element in a sequence. When a step() callback is invoked the current value of 'next' is stored to be returned later and the next variable is incremented.
When the end of a sequence is reached, next should always equal NULL
The 'bmiter__' prefix is used because these are used in bmesh_iterators_inine.c but should otherwise be seen as private.
Definition at line 420 of file bmesh_iterators.c.
References BLI_mempool_iternew(), BLI_mempool_len(), BLI_mempool_iter::pool, and BMIter__elem_of_mesh::pooliter.
Referenced by BM_iter_init().
| void* bmiter__elem_of_mesh_step | ( | struct BMIter__elem_of_mesh * | iter | ) |
Definition at line 428 of file bmesh_iterators.c.
References BLI_assert, BLI_mempool_iterstep(), BLI_mempool_len(), count, BLI_mempool_iter::pool, and BMIter__elem_of_mesh::pooliter.
Referenced by BM_iter_init().
| void bmiter__face_of_edge_begin | ( | struct BMIter__face_of_edge * | iter | ) |
Definition at line 606 of file bmesh_iterators.c.
References BMIter__face_of_edge::edata, BMEdge::l, BMIter__face_of_edge::l_first, and BMIter__face_of_edge::l_next.
Referenced by BM_iter_init().
| void* bmiter__face_of_edge_step | ( | struct BMIter__face_of_edge * | iter | ) |
Definition at line 611 of file bmesh_iterators.c.
References BMLoop::f, BMIter__face_of_edge::l_first, BMIter__face_of_edge::l_next, NULL, and BMLoop::radial_next.
Referenced by BM_iter_init().
| void bmiter__face_of_vert_begin | ( | struct BMIter__face_of_vert * | iter | ) |
Definition at line 474 of file bmesh_iterators.c.
References bmesh_disk_faceloop_find_first(), bmesh_disk_facevert_count(), count, BMVert::e, BMLoop::e, BMIter__face_of_vert::e_first, BMIter__face_of_vert::e_next, BMIter__face_of_vert::l_first, BMIter__face_of_vert::l_next, NULL, and BMIter__face_of_vert::vdata.
Referenced by BM_iter_init().
| void* bmiter__face_of_vert_step | ( | struct BMIter__face_of_vert * | iter | ) |
Definition at line 488 of file bmesh_iterators.c.
References bmesh_disk_faceedge_find_next(), bmesh_radial_faceloop_find_first(), bmesh_radial_faceloop_find_next(), count, BMIter__face_of_vert::e_next, BMLoop::f, BMEdge::l, BMIter__face_of_vert::l_first, BMIter__face_of_vert::l_next, NULL, and BMIter__face_of_vert::vdata.
Referenced by BM_iter_init().
| void bmiter__loop_of_edge_begin | ( | struct BMIter__loop_of_edge * | iter | ) |
Definition at line 553 of file bmesh_iterators.c.
References BMIter__loop_of_edge::edata, BMEdge::l, BMIter__loop_of_edge::l_first, and BMIter__loop_of_edge::l_next.
Referenced by BM_iter_init().
| void* bmiter__loop_of_edge_step | ( | struct BMIter__loop_of_edge * | iter | ) |
Definition at line 558 of file bmesh_iterators.c.
References BMIter__loop_of_edge::l_first, BMIter__loop_of_edge::l_next, NULL, and BMLoop::radial_next.
Referenced by BM_iter_init().
| void bmiter__loop_of_face_begin | ( | struct BMIter__loop_of_face * | iter | ) |
Definition at line 696 of file bmesh_iterators.c.
References BM_FACE_FIRST_LOOP, BMIter__loop_of_face::l_first, BMIter__loop_of_face::l_next, and BMIter__loop_of_face::pdata.
Referenced by BM_iter_init().
| void* bmiter__loop_of_face_step | ( | struct BMIter__loop_of_face * | iter | ) |
Definition at line 701 of file bmesh_iterators.c.
References BMIter__loop_of_face::l_first, BMIter__loop_of_face::l_next, BMLoop::next, and NULL.
Referenced by BM_iter_init().
| void bmiter__loop_of_loop_begin | ( | struct BMIter__loop_of_loop * | iter | ) |
Definition at line 577 of file bmesh_iterators.c.
References BMIter__loop_of_loop::l_first, BMIter__loop_of_loop::l_next, BMIter__loop_of_loop::ldata, NULL, and BMLoop::radial_next.
Referenced by BM_iter_init().
| void* bmiter__loop_of_loop_step | ( | struct BMIter__loop_of_loop * | iter | ) |
Definition at line 587 of file bmesh_iterators.c.
References BMIter__loop_of_loop::l_first, BMIter__loop_of_loop::l_next, NULL, and BMLoop::radial_next.
Referenced by BM_iter_init().
| void bmiter__loop_of_vert_begin | ( | struct BMIter__loop_of_vert * | iter | ) |
Definition at line 513 of file bmesh_iterators.c.
References bmesh_disk_faceloop_find_first(), bmesh_disk_facevert_count(), count, BMVert::e, BMLoop::e, BMIter__loop_of_vert::e_first, BMIter__loop_of_vert::e_next, BMIter__loop_of_vert::l_first, BMIter__loop_of_vert::l_next, NULL, and BMIter__loop_of_vert::vdata.
Referenced by BM_iter_init().
| void* bmiter__loop_of_vert_step | ( | struct BMIter__loop_of_vert * | iter | ) |
Definition at line 527 of file bmesh_iterators.c.
References bmesh_disk_faceedge_find_next(), bmesh_radial_faceloop_find_first(), bmesh_radial_faceloop_find_next(), count, BMIter__loop_of_vert::e_next, BMEdge::l, BMIter__loop_of_vert::l_first, BMIter__loop_of_vert::l_next, NULL, and BMIter__loop_of_vert::vdata.
Referenced by BM_iter_init().
| void bmiter__vert_of_edge_begin | ( | struct BMIter__vert_of_edge * | iter | ) |
Definition at line 629 of file bmesh_iterators.c.
Referenced by BM_iter_init().
| void* bmiter__vert_of_edge_step | ( | struct BMIter__vert_of_edge * | iter | ) |
Definition at line 634 of file bmesh_iterators.c.
References count, BMIter__vert_of_edge::edata, NULL, BMEdge::v1, and BMEdge::v2.
Referenced by BM_iter_init().
| void bmiter__vert_of_face_begin | ( | struct BMIter__vert_of_face * | iter | ) |
Definition at line 650 of file bmesh_iterators.c.
References BM_FACE_FIRST_LOOP, BMIter__vert_of_face::l_first, BMIter__vert_of_face::l_next, and BMIter__vert_of_face::pdata.
Referenced by BM_iter_init().
| void* bmiter__vert_of_face_step | ( | struct BMIter__vert_of_face * | iter | ) |
Definition at line 655 of file bmesh_iterators.c.
References BMIter__vert_of_face::l_first, BMIter__vert_of_face::l_next, BMLoop::next, NULL, and BMLoop::v.
Referenced by BM_iter_init().
| int BMO_iter_as_array | ( | BMOpSlot | slot_args[BMO_OP_MAX_SLOTS], |
| const char * | slot_name, | ||
| const char | restrictmask, | ||
| void ** | array, | ||
| const int | len | ||
| ) |
Operator Iterator as Array.
Sometimes its convenient to get the iterator as an array.
Definition at line 132 of file bmesh_iterators.c.
References BMO_iter_new(), BMO_iter_step(), and len.
Referenced by bmo_contextual_create_exec().
| void* BMO_iter_as_arrayN | ( | BMOpSlot | slot_args[BMO_OP_MAX_SLOTS], |
| const char * | slot_name, | ||
| const char | restrictmask, | ||
| int * | r_len, | ||
| void ** | stack_array, | ||
| int | stack_array_size | ||
| ) |
Definition at line 214 of file bmesh_iterators.c.
References BLI_assert, BMO_iter_new(), BMO_iter_step(), BMO_slot_buffer_count(), count, MEM_mallocN, MEM_reallocN, and NULL.
| int BMO_iter_elem_count_flag | ( | BMesh * | bm, |
| const char | itype, | ||
| void * | data, | ||
| const short | oflag, | ||
| const bool | value | ||
| ) |
Elem Iter Tool Flag Count.
Counts how many flagged / unflagged items are found in this element.
Definition at line 333 of file bmesh_iterators.c.
References BLI_assert, bm, BM_EDGE, BM_FACE, BM_ITER_ELEM, bm_iter_itype_htype_map, BM_LOOP, BM_VERT, BMO_edge_flag_test_bool, BMO_face_flag_test_bool, BMO_vert_flag_test_bool, count, data, itype, and oflag.
Referenced by bmo_contextual_create_exec(), bmo_edgeloop_fill_exec(), and bmo_edgenet_prepare_exec().
| const char bm_iter_itype_htype_map[BM_ITYPE_MAX] |
Definition at line 33 of file bmesh_iterators.c.
Referenced by BMO_iter_elem_count_flag(), bpy_bmelemseq_ensure_lookup_table(), bpy_bmelemseq_index_update(), bpy_bmelemseq_subscript_int(), and bpy_slot_from_py().