|
Blender V5.0
|
#include <cstddef>#include "MEM_guardedalloc.h"#include "DNA_scene_types.h"#include "BLI_listbase.h"#include "BLI_math_vector.h"#include "BLI_task.h"#include "bmesh.hh"#include "bmesh_query_uv.hh"#include "bmesh_structure.hh"#include "bmesh_private.hh"Go to the source code of this file.
Classes | |
| struct | SelectionCountChunkData |
| struct | SelectionFlushChunkData |
Selection routines for bmesh structures. This is actually all old code ripped from editmesh_lib.c and slightly modified to work for bmesh's. This also means that it has some of the same problems.... something that that should be addressed eventually.
Definition in file bmesh_marking.cc.
Definition at line 1605 of file bmesh_marking.cc.
References bm, BM_EDGE, BM_edge_hide_set(), BM_edge_select_set(), BM_FACE, BM_face_hide_set(), BM_face_select_set(), BM_VERT, BM_vert_hide_set(), BM_vert_select_set(), BMESH_ASSERT, and BMHeader::htype.
Definition at line 1152 of file bmesh_marking.cc.
References BLI_findptr(), bm, and offsetof.
Definition at line 1157 of file bmesh_marking.cc.
References BLI_findptr(), BLI_freelinkN(), bm, and offsetof.
Definition at line 1180 of file bmesh_marking.cc.
References bm, BM_select_history_check, and BM_select_history_store_notest.
| void _bm_select_history_store_after | ( | BMesh * | bm, |
| BMEditSelection * | ese_ref, | ||
| BMHeader * | ele ) |
Definition at line 1200 of file bmesh_marking.cc.
References bm, BM_select_history_check, and BM_select_history_store_after_notest.
| void _bm_select_history_store_after_notest | ( | BMesh * | bm, |
| BMEditSelection * | ese_ref, | ||
| BMHeader * | ele ) |
Definition at line 1194 of file bmesh_marking.cc.
References BLI_insertlinkafter(), bm, and bm_select_history_create().
Definition at line 1187 of file bmesh_marking.cc.
References bm, BM_select_history_check, and BM_select_history_store_head_notest.
Definition at line 1174 of file bmesh_marking.cc.
References BLI_addhead(), bm, and bm_select_history_create().
Definition at line 1168 of file bmesh_marking.cc.
References BLI_addtail(), bm, and bm_select_history_create().
| void BM_edge_hide_set | ( | BMEdge * | e, |
| const bool | hide ) |
Definition at line 1541 of file bmesh_marking.cc.
References BLI_assert, BM_EDGE, BM_elem_flag_disable, BM_elem_flag_set, BM_elem_flag_test, BM_ELEM_HIDDEN, BM_ELEM_SELECT, e, BMLoop::f, BMLoop::radial_next, and vert_flush_hide_set().
Referenced by _bm_elem_hide_set().
|
static |
Definition at line 198 of file bmesh_marking.cc.
References BM_elem_flag_test, BM_ELEM_SELECT, BMLoop::f, and BMLoop::radial_next.
Referenced by BM_face_select_set().
|
static |
Definition at line 227 of file bmesh_marking.cc.
References BM_elem_flag_test, BM_ELEM_HIDDEN, e, BMLoop::f, and BMLoop::radial_next.
Referenced by edge_flush_hide_set().
Select Edge.
Changes selection state of a single edge in a mesh.
Definition at line 642 of file bmesh_marking.cc.
References BLI_assert, bm, BM_EDGE, BM_elem_flag_disable, BM_elem_flag_enable, BM_elem_flag_test, BM_ELEM_HIDDEN, BM_ELEM_SELECT, bm_vert_is_edge_select_any_other(), BM_vert_select_set(), e, i, SCE_SELECT_VERTEX, select, and v.
Referenced by _bm_elem_hide_set(), BM_elem_select_set(), BM_face_select_set(), bm_face_split_by_edges_island_connect(), BM_mesh_bm_from_me(), BM_mesh_select_mode_clean_ex(), BM_mesh_select_mode_set(), BM_mesh_uvselect_sync_to_mesh(), bm_vert_connect_select_history(), do_lasso_select_mesh__doSelectEdge_pass0(), do_lasso_select_mesh__doSelectEdge_pass1(), do_mesh_box_select__doSelectEdge_pass0(), do_mesh_box_select__doSelectEdge_pass1(), edbm_add_edge_face_exec__tricky_extend_sel(), edbm_add_edge_face_exec__tricky_finalize_sel(), edbm_backbuf_check_and_select_edges(), edbm_intersect_select(), edbm_polybuild_transform_at_cursor_invoke(), edbm_region_to_loop_exec(), edbm_rip_edge_invoke(), edbm_ripsel_deselect_helper(), edbm_select_by_pole_count_exec(), edbm_select_linked_exec(), edbm_select_linked_pick_ex(), edbm_select_loose_exec(), EDBM_select_mirrored(), edbm_select_non_manifold_exec(), EDBM_select_pick(), edbm_select_random_exec(), edbm_select_sharp_edges_exec(), EDBM_select_swap(), EDBM_selectmode_convert(), EDBM_selectmode_set(), edgering_select(), edgetag_set_cb(), knife_make_cuts(), knife_make_face_cuts(), mesh_circle_doSelectEdge(), mouse_mesh_shortest_path_edge(), EditMeshSymmetryHelper::set_hflag_on_mirror_edges(), similar_edge_select_exec(), uv_hide_exec(), uvedit_edge_select_disable(), and uvedit_edge_select_enable().
Definition at line 761 of file bmesh_marking.cc.
References BLI_assert, bm, BM_EDGE, BM_elem_flag_disable, BM_elem_flag_enable, BM_elem_flag_test, BM_ELEM_HIDDEN, BM_ELEM_SELECT, e, and select.
Referenced by BM_face_select_set(), bm_mesh_select_mode_flush_face_to_vert_and_edge(), and bm_vert_collapse_edge_and_merge().
| void BM_editselection_center | ( | BMEditSelection * | ese, |
| float | r_center[3] ) |
Generic way to get data from an BMEditSelection type These functions were written to be used by the Modifier widget when in Rotate about active mode, but can be used anywhere.
Definition at line 1042 of file bmesh_marking.cc.
References BM_EDGE, BM_FACE, BM_face_calc_center_median(), BM_VERT, BMVert::co, copy_v3_v3(), BMEditSelection::ele, BMEditSelection::htype, mid_v3_v3v3(), BMEdge::v1, and BMEdge::v2.
Referenced by BM_editselection_plane(), blender::ed::object::calc_active_center_for_editmode(), blender::ed::transform::transform_convert_mesh_islands_calc(), and uv_map_transform_center().
| void BM_editselection_normal | ( | BMEditSelection * | ese, |
| float | r_normal[3] ) |
Definition at line 1058 of file bmesh_marking.cc.
References add_v3_v3v3(), BM_EDGE, BM_FACE, BM_VERT, BMVert::co, copy_v3_v3(), cross_v3_v3v3(), BMEditSelection::ele, BMEditSelection::htype, BMFace::no, BMVert::no, normalize_v3(), sub_v3_v3v3(), BMEdge::v1, and BMEdge::v2.
Referenced by blender::ed::transform::getTransformOrientation_ex(), and blender::ed::transform::transform_convert_mesh_islands_calc().
| void BM_editselection_plane | ( | BMEditSelection * | ese, |
| float | r_plane[3] ) |
Calculate a plane that is right angles to the edge/vert/faces normal also make the plane run along an axis that is related to the geometry, because this is used for the gizmos Y axis.
Definition at line 1086 of file bmesh_marking.cc.
References BM_EDGE, BM_edge_is_boundary(), BM_editselection_center(), BM_FACE, BM_face_calc_tangent_auto(), BM_VERT, BMVert::co, cross_v3_v3v3(), BMEditSelection::ele, BMEditSelection::htype, BMEdge::l, BMLoop::next, BMVert::no, normalize_v3(), BMEditSelection::prev, sub_v3_v3v3(), BMLoop::v, BMEdge::v1, and BMEdge::v2.
Referenced by blender::ed::transform::getTransformOrientation_ex(), and blender::ed::transform::transform_convert_mesh_islands_calc().
Definition at line 922 of file bmesh_marking.cc.
References BLI_assert, bm, BM_EDGE, BM_edge_select_set(), BM_FACE, BM_face_select_set(), BM_VERT, BM_vert_select_set(), BMElem::head, BMHeader::htype, and select.
Referenced by BM_elem_select_copy(), BM_mesh_elem_hflag_disable_test(), BM_mesh_elem_hflag_enable_test(), BMO_slot_buffer_hflag_disable(), BMO_slot_buffer_hflag_enable(), bpy_bm_elem_hflag_set(), bpy_bm_elem_select_set(), edbm_extrude_ex(), EDBM_mesh_reveal(), edbm_select_by_attribute_exec(), walker_deselect_nth(), walker_deselect_nth_edge_chain(), walker_deselect_nth_face_chain(), walker_deselect_nth_vertex_chain(), and walker_select().
| void BM_face_hide_set | ( | BMFace * | f, |
| const bool | hide ) |
Definition at line 1570 of file bmesh_marking.cc.
References BLI_assert, BM_elem_flag_disable, BM_elem_flag_set, BM_elem_flag_test, BM_ELEM_HIDDEN, BM_ELEM_SELECT, BM_FACE, BM_FACE_FIRST_LOOP, BMLoop::e, edge_flush_hide_set(), BMFace::head, BMHeader::htype, BMLoop::next, BMLoop::v, and vert_flush_hide_set().
Referenced by _bm_elem_hide_set().
Select Face.
Changes selection state of a single face in a mesh.
Rely on BM_mesh_select_mode_flush to correct these cases.
Definition at line 682 of file bmesh_marking.cc.
References BLI_assert, bm, bm_edge_is_face_select_any_other(), BM_edge_select_set(), BM_edge_select_set_noflush(), BM_elem_flag_disable, BM_elem_flag_enable, BM_elem_flag_test, BM_ELEM_HIDDEN, BM_ELEM_SELECT, BM_FACE, BM_FACE_FIRST_LOOP, bm_vert_is_edge_select_any_other(), BM_vert_select_set(), BMLoop::e, BMFace::head, BMHeader::htype, BMLoop::next, SCE_SELECT_EDGE, SCE_SELECT_VERTEX, select, and BMLoop::v.
Referenced by _bm_elem_hide_set(), BM_elem_select_set(), bm_face_split_by_edges(), bm_face_split_by_edges_island_connect(), BM_mesh_bm_from_me(), BM_mesh_select_mode_set(), BM_mesh_uvselect_sync_to_mesh(), do_lasso_select_mesh__doSelectFace(), do_mesh_box_select__doSelectFace(), edbm_add_edge_face_exec__tricky_finalize_sel(), edbm_backbuf_check_and_select_faces(), EDBM_deselect_by_material(), edbm_extrude_discrete_faces(), edbm_loop_to_region_exec(), edbm_mod_weighted_strength_exec(), edbm_polybuild_transform_at_cursor_invoke(), edbm_select_by_pole_count_exec(), edbm_select_face_by_sides_exec(), EDBM_select_interior_faces(), edbm_select_linked_exec(), edbm_select_linked_flat_faces_exec(), edbm_select_linked_pick_ex(), edbm_select_loose_exec(), EDBM_select_mirrored(), EDBM_select_pick(), edbm_select_random_exec(), edbm_select_similar_region_exec(), EDBM_select_swap(), EDBM_selectmode_convert(), EDBM_selectmode_set(), facetag_set_cb(), mesh_circle_doSelectFace(), EditMeshSymmetryHelper::set_hflag_on_mirror_faces(), similar_face_select_exec(), uv_hide_exec(), uv_mesh_hide_sync_select(), uvedit_edge_select_disable(), uvedit_edge_select_enable(), uvedit_face_select_disable(), uvedit_face_select_enable(), uvedit_uv_select_disable(), and uvedit_uv_select_enable().
Definition at line 783 of file bmesh_marking.cc.
References BLI_assert, bm, BM_elem_flag_disable, BM_elem_flag_enable, BM_elem_flag_test, BM_ELEM_HIDDEN, BM_ELEM_SELECT, BM_FACE, BMFace::head, BMHeader::htype, and select.
Referenced by BM_mesh_uvselect_sync_to_mesh().
Definition at line 1003 of file bmesh_marking.cc.
References bm, BM_EDGE, BMEditSelection::ele, and BMEditSelection::htype.
Referenced by BM_mesh_active_edge_index_get(), BM_mesh_region_match(), blender::draw::mesh_render_data_create(), and uv_shortest_path_pick_invoke().
| int BM_mesh_active_edge_index_get | ( | BMesh * | bm | ) |
Definition at line 951 of file bmesh_marking.cc.
References bm, BM_elem_index_get, BM_mesh_active_edge_get(), and e.
Referenced by blender::ed::geometry::get_original_geometry_eval_copy().
Definition at line 1029 of file bmesh_marking.cc.
References bm, and BMEditSelection::ele.
Referenced by deselect_nth_active(), edbm_elem_active_elem_or_face_get(), edbm_preselect_or_active(), and blender::ed::mesh::set_attribute::mesh_set_attribute_invoke().
Definition at line 963 of file bmesh_marking.cc.
References bm, BM_elem_flag_test, BM_ELEM_HIDDEN, BM_ELEM_SELECT, BM_FACE, BM_FACES_OF_MESH, BM_ITER_MESH, BMEditSelection::ele, BMEditSelection::htype, and BMEditSelection::prev.
Referenced by BM_mesh_active_face_index_get(), BM_select_history_active_get(), deselect_nth_active(), ED_space_image_auto_set(), ED_uvedit_get_aspect(), EDBM_uv_active_face_get(), blender::draw::mesh_render_data_create(), uv_shortest_path_pick_exec(), and uv_shortest_path_pick_invoke().
| int BM_mesh_active_face_index_get | ( | BMesh * | bm, |
| bool | is_sloppy, | ||
| bool | is_selected ) |
Definition at line 945 of file bmesh_marking.cc.
References bm, BM_elem_index_get, and BM_mesh_active_face_get().
Referenced by blender::ed::geometry::get_original_geometry_eval_copy().
Definition at line 940 of file bmesh_marking.cc.
References bm.
Referenced by EDBM_select_pick(), mouse_mesh_loop(), mouse_mesh_shortest_path_face(), mouse_mesh_uv_shortest_path_face(), and uv_mouse_select_multi().
Definition at line 1016 of file bmesh_marking.cc.
References bm, BM_VERT, BMEditSelection::ele, and BMEditSelection::htype.
Referenced by BM_mesh_active_vert_index_get(), ED_mesh_active_dvert_get_em(), edbm_fill_grid_prepare(), edbm_select_axis_exec(), blender::ed::transform::getTransformOrientation_ex(), blender::draw::mesh_render_data_create(), and uv_shortest_path_pick_invoke().
| int BM_mesh_active_vert_index_get | ( | BMesh * | bm | ) |
Definition at line 957 of file bmesh_marking.cc.
References bm, BM_elem_index_get, BM_mesh_active_vert_get(), and v.
Referenced by blender::ed::geometry::get_original_geometry_eval_copy().
| int BM_mesh_elem_hflag_count_disabled | ( | BMesh * | bm, |
| const char | htype, | ||
| const char | hflag, | ||
| const bool | respecthide ) |
Definition at line 914 of file bmesh_marking.cc.
References bm, and bm_mesh_flag_count().
Referenced by bmo_slot_buffer_from_hflag().
| int BM_mesh_elem_hflag_count_enabled | ( | BMesh * | bm, |
| const char | htype, | ||
| const char | hflag, | ||
| const bool | respecthide ) |
Definition at line 906 of file bmesh_marking.cc.
References bm, and bm_mesh_flag_count().
Referenced by bmo_slot_buffer_from_hflag().
| void BM_mesh_elem_hflag_disable_all | ( | BMesh * | bm, |
| const char | htype, | ||
| const char | hflag, | ||
| const bool | respecthide ) |
Definition at line 1477 of file bmesh_marking.cc.
References bm, and BM_mesh_elem_hflag_disable_test().
Referenced by BKE_mesh_remesh_voxel_fix_poles(), BM_mesh_bisect_plane(), BM_mesh_calc_edge_groups_as_arrays(), BM_mesh_esubdivide(), BM_mesh_intersect(), BM_mesh_region_match(), BM_mesh_uvselect_sync_to_mesh(), BM_mesh_wireframe(), bmo_bevel_exec(), bmo_bisect_plane_exec(), bmo_edgenet_fill_exec(), bmo_face_attribute_fill_exec(), bmo_holes_fill_exec(), bmo_inset_individual_exec(), bmo_inset_region_exec(), bmo_offset_edgeloops_exec(), bmo_split_edges_exec(), bmo_subdivide_edgering_exec(), bmo_triangulate_exec(), bmo_wireframe_exec(), bridge_loop_pair(), build_hull(), cylinder_project_exec(), blender::ed::sculpt_paint::face_set::delete_geometry(), do_lasso_select_mesh_uv(), edbm_bridge_edge_loops_for_single_editmesh(), edbm_bridge_tag_boundary_edges(), edbm_delete_edgeloop_exec(), edbm_delete_loose_exec(), EDBM_flag_disable_all(), edbm_intersect_select(), edbm_loop_to_region_exec(), edbm_offset_edgeloop_exec(), EDBM_op_call_and_selectf(), edbm_region_to_loop_exec(), edbm_select_linked_flat_faces_exec(), edbm_split_exec(), edbm_wireframe_exec(), geometry_extract_apply(), geometry_extract_tag_face_set(), geometry_extract_tag_masked_faces(), hull_merge_triangles(), knifeproject_exec(), mesh_separate_loose(), mesh_separate_material(), mesh_separate_selected(), mesh_separate_tagged(), mesh_symmetry_snap_exec(), multires_unsubdivide_prepare_original_bmesh_for_extract(), multires_unsubdivide_single_level(), multires_unsubdivide_to_basemesh(), skin_fix_hole_no_good_verts(), skin_smooth_hulls(), slice_paint_mask(), smart_uv_project_calculate_project_normals(), blender::ed::transform::special_aftertrans_update__mesh(), sphere_project_exec(), blender::ed::sculpt_paint::symmetrize_exec(), unsubdivide_build_base_mesh_from_tags(), blender::ed::sculpt_paint::trim::update_normals(), uv_box_select_exec(), uv_circle_select_exec(), uv_mesh_hide_sync_select(), uv_select_edgering(), uv_select_faceloop(), uv_select_flush_from_tag_loop(), uv_select_more_less(), uv_select_overlap(), blender::ed::object::vgroup_mirror(), walker_deselect_nth_edge_chain(), walker_deselect_nth_face_chain(), and walker_deselect_nth_vertex_chain().
| void BM_mesh_elem_hflag_disable_test | ( | BMesh * | bm, |
| const char | htype, | ||
| const char | hflag, | ||
| const bool | respecthide, | ||
| const bool | overwrite, | ||
| const char | hflag_test ) |
Definition at line 1354 of file bmesh_marking.cc.
References BLI_assert, bm, BM_ALL_NOLOOP, BM_EDGE, BM_EDGES_OF_MESH, BM_elem_flag_disable, BM_elem_flag_enable, BM_elem_flag_test, BM_ELEM_HIDDEN, BM_ELEM_SELECT, BM_elem_select_set(), BM_FACE, BM_FACES_OF_MESH, BM_iter_new, BM_select_history_clear(), BM_VERT, BM_VERTS_OF_MESH, i, and UNLIKELY.
Referenced by BM_mesh_elem_hflag_disable_all().
| void BM_mesh_elem_hflag_enable_all | ( | BMesh * | bm, |
| const char | htype, | ||
| const char | hflag, | ||
| const bool | respecthide ) |
Definition at line 1486 of file bmesh_marking.cc.
References bm, and BM_mesh_elem_hflag_enable_test().
Referenced by BKE_mesh_remesh_voxel_fix_poles(), BM_mesh_calc_path_region_edge(), BM_mesh_calc_path_region_face(), BM_mesh_calc_path_uv_region_face(), BM_mesh_edgesplit(), BM_mesh_separate_faces(), bmo_inset_region_exec(), EDBM_flag_enable_all(), EDBM_mesh_knife(), slice_paint_mask(), unsubdivide_build_base_mesh_from_tags(), and blender::ed::sculpt_paint::trim::update_normals().
| void BM_mesh_elem_hflag_enable_test | ( | BMesh * | bm, |
| const char | htype, | ||
| const char | hflag, | ||
| const bool | respecthide, | ||
| const bool | overwrite, | ||
| const char | hflag_test ) |
Definition at line 1423 of file bmesh_marking.cc.
References BLI_assert, bm, BM_ALL_NOLOOP, BM_EDGE, BM_EDGES_OF_MESH, BM_elem_flag_disable, BM_elem_flag_enable, BM_elem_flag_test, BM_ELEM_HIDDEN, BM_ELEM_SELECT, BM_elem_select_set(), BM_FACE, BM_FACES_OF_MESH, BM_iter_new, BM_VERT, BM_VERTS_OF_MESH, i, and UNLIKELY.
Referenced by BM_mesh_elem_hflag_enable_all(), edbm_delete_edgeloop_exec(), edbm_edge_rotate_selected_exec(), edbm_remove_doubles_exec(), knifeproject_exec(), mesh_separate_selected(), and uv_reveal_exec().
|
static |
counts number of elements with flag enabled/disabled
Definition at line 860 of file bmesh_marking.cc.
References BLI_assert, bm, BM_ALL_NOLOOP, BM_EDGE, BM_EDGES_OF_MESH, BM_elem_flag_test, BM_elem_flag_test_bool, BM_ELEM_HIDDEN, BM_FACE, BM_FACES_OF_MESH, BM_ITER_MESH, BM_VERT, and BM_VERTS_OF_MESH.
Referenced by BM_mesh_elem_hflag_count_disabled(), and BM_mesh_elem_hflag_count_enabled().
| void BM_mesh_select_flush_from_verts | ( | BMesh * | bm, |
| bool | select ) |
Mode independent selection/de-selection flush from vertices.
| select | When true, flush the selection state to de-selected elements, otherwise perform the opposite, flushing de-selection. |
Definition at line 548 of file bmesh_marking.cc.
References bm, BM_EDGES_OF_MESH, BM_elem_flag_disable, BM_elem_flag_enable, BM_elem_flag_test, BM_ELEM_HIDDEN, BM_ELEM_SELECT, BM_FACE_FIRST_LOOP, BM_FACES_OF_MESH, BM_ITER_MESH, BM_select_history_validate(), e, BMLoop::f, BMLoop::next, BMLoop::radial_next, recount_totsels(), select, and BMLoop::v.
Referenced by BM_mesh_esubdivide(), BM_mesh_uvselect_sync_to_mesh(), bpy_bmesh_select_flush(), ED_uvedit_select_sync_flush(), EDBM_select_flush_from_verts(), EDBM_selectmode_convert(), uv_mouse_select_loop_generic_multi(), uv_select_linked_multi(), uv_select_similar_edge_exec(), uv_select_similar_face_exec(), uv_select_similar_island_exec(), and uv_select_similar_vert_exec().
| bool BM_mesh_select_is_mixed | ( | const BMesh * | bm | ) |
Return true when there are a mix of selected/unselected elements.
Definition at line 243 of file bmesh_marking.cc.
References bm, ELEM, SCE_SELECT_EDGE, and SCE_SELECT_VERTEX.
Referenced by EDBM_selectmode_toggle_multi().
| void BM_mesh_select_mode_clean | ( | BMesh * | bm | ) |
Definition at line 314 of file bmesh_marking.cc.
References bm, and BM_mesh_select_mode_clean_ex().
Referenced by EDBM_select_less().
| void BM_mesh_select_mode_clean_ex | ( | BMesh * | bm, |
| short | selectmode ) |
Select Mode Clean.
Remove isolated selected elements when in a mode doesn't support them. eg: in edge-mode a selected vertex must be connected to a selected edge.
Definition at line 254 of file bmesh_marking.cc.
References bm, BM_edge_select_set(), BM_EDGES_OF_MESH, BM_elem_flag_disable, BM_elem_flag_test, BM_ELEM_SELECT, BM_FACE_FIRST_LOOP, BM_FACES_OF_MESH, BM_ITER_MESH, BM_vert_select_set(), BM_VERTS_OF_MESH, BMLoop::e, e, BMLoop::next, SCE_SELECT_EDGE, SCE_SELECT_FACE, SCE_SELECT_VERTEX, and v.
Referenced by BM_mesh_select_mode_clean(), and edbm_rip_invoke__edge().
| void BM_mesh_select_mode_flush | ( | BMesh * | bm | ) |
Definition at line 541 of file bmesh_marking.cc.
References bm, BM_mesh_select_mode_flush_ex(), and BMSelectFlushFlag_Default.
Referenced by BM_mesh_select_mode_set(), bmesh_edit_end(), ED_uvedit_select_sync_flush(), edbm_rip_edge_invoke(), knifeproject_exec(), uv_hide_exec(), uv_mouse_select_multi(), and uv_select_linked_multi().
|
static |
Definition at line 406 of file bmesh_marking.cc.
References BLI_parallel_range_settings_defaults(), bm, BM_FACES_OF_MESH, bm_mesh_select_mode_flush_edge_to_face_iter_fn(), bm_mesh_select_mode_flush_reduce_fn(), BM_THREAD_LIMIT, SelectionFlushChunkData::delta_selection_len, TaskParallelSettings::func_reduce, TaskParallelSettings::use_threading, TaskParallelSettings::userdata_chunk, and TaskParallelSettings::userdata_chunk_size.
Referenced by BM_mesh_select_mode_flush_ex().
|
static |
Definition at line 348 of file bmesh_marking.cc.
References BM_elem_flag_set, BM_elem_flag_test, BM_ELEM_HIDDEN, BM_ELEM_SELECT, BM_FACE_FIRST_LOOP, SelectionFlushChunkData::delta_selection_len, BMLoop::e, and BMLoop::next.
Referenced by bm_mesh_select_mode_flush_edge_to_face().
|
static |
Flush down from edges to verts.
Definition at line 427 of file bmesh_marking.cc.
References bm, BM_EDGES_OF_MESH, BM_elem_flag_test, BM_ELEM_HIDDEN, BM_ELEM_SELECT, BM_ITER_MESH, BM_vert_select_set(), and e.
Referenced by BM_mesh_select_mode_flush_ex().
| void BM_mesh_select_mode_flush_ex | ( | BMesh * | bm, |
| short | selectmode, | ||
| BMSelectFlushFlag | flag ) |
Select Mode Flush.
Makes sure to flush selections 'upwards' (ie: all verts of an edge selects the edge and so on). This should only be called by system and not tool authors.
Definition at line 500 of file bmesh_marking.cc.
References BLI_assert, bm, bm_mesh_select_mode_flush_edge_to_face(), bm_mesh_select_mode_flush_edge_to_vert(), bm_mesh_select_mode_flush_face_to_vert_and_edge(), bm_mesh_select_mode_flush_vert_to_edge(), BM_select_history_validate(), Down, flag, RecalcLenEdge, RecalcLenFace, RecalcLenVert, recount_totedgesel(), recount_totfacesel(), recount_totsels_are_ok(), recount_totvertsel(), SCE_SELECT_EDGE, SCE_SELECT_FACE, and SCE_SELECT_VERTEX.
Referenced by BM_mesh_select_mode_flush(), bpy_bmesh_select_flush_mode(), edbm_bevel_calc(), EDBM_selectmode_flush_ex(), mesh_circle_select(), and view3d_circle_select_recalc().
|
static |
Flush down from faces to verts & edges.
Definition at line 462 of file bmesh_marking.cc.
References bm, BM_edge_select_set_noflush(), BM_elem_flag_test, BM_ELEM_HIDDEN, BM_ELEM_SELECT, BM_FACE_FIRST_LOOP, BM_FACES_OF_MESH, BM_ITER_MESH, BM_vert_select_set(), BMLoop::e, BMLoop::next, and BMLoop::v.
Referenced by BM_mesh_select_mode_flush_ex().
|
static |
Definition at line 381 of file bmesh_marking.cc.
References SelectionFlushChunkData::delta_selection_len.
Referenced by bm_mesh_select_mode_flush_edge_to_face(), and bm_mesh_select_mode_flush_vert_to_edge().
|
static |
Definition at line 390 of file bmesh_marking.cc.
References BLI_parallel_range_settings_defaults(), bm, BM_EDGES_OF_MESH, bm_mesh_select_mode_flush_reduce_fn(), bm_mesh_select_mode_flush_vert_to_edge_iter_fn(), BM_THREAD_LIMIT, SelectionFlushChunkData::delta_selection_len, TaskParallelSettings::func_reduce, TaskParallelSettings::use_threading, TaskParallelSettings::userdata_chunk, and TaskParallelSettings::userdata_chunk_size.
Referenced by BM_mesh_select_mode_flush_ex().
|
static |
Definition at line 327 of file bmesh_marking.cc.
References BM_elem_flag_disable, BM_elem_flag_enable, BM_elem_flag_test, BM_ELEM_HIDDEN, BM_ELEM_SELECT, SelectionFlushChunkData::delta_selection_len, and e.
Referenced by bm_mesh_select_mode_flush_vert_to_edge().
| void BM_mesh_select_mode_set | ( | BMesh * | bm, |
| int | selectmode ) |
Select Mode Set
Sets the selection mode for the bmesh, updating the selection state.
Definition at line 807 of file bmesh_marking.cc.
References bm, BM_edge_select_set(), BM_EDGES_OF_MESH, BM_elem_flag_disable, BM_elem_flag_test, BM_ELEM_SELECT, BM_face_select_set(), BM_FACES_OF_MESH, BM_ITER_MESH, BM_mesh_select_mode_flush(), BM_VERTS_OF_MESH, SCE_SELECT_EDGE, SCE_SELECT_FACE, and SCE_SELECT_VERTEX.
| bool BM_select_history_active_get | ( | BMesh * | bm, |
| struct BMEditSelection * | ese ) |
Get the active mesh element (with active-face fallback).
Definition at line 1238 of file bmesh_marking.cc.
References bm, BM_FACE, BM_mesh_active_face_get(), BMEditSelection::ele, BMEditSelection::htype, BMEditSelection::next, and BMEditSelection::prev.
Referenced by blender::ed::object::calc_active_center_for_editmode(), edbm_rip_invoke__vert(), blender::ed::transform::getTransformOrientation_ex(), and uv_map_transform_center().
| void BM_select_history_clear | ( | BMesh * | bm | ) |
Definition at line 1208 of file bmesh_marking.cc.
References BLI_freelistN(), and bm.
Referenced by BM_mesh_bm_from_me(), BM_mesh_elem_hflag_disable_test(), BM_mesh_intersect(), BM_mesh_region_match(), BPy_BMEditSel_Assign(), bpy_bmeditselseq_clear(), ED_uvedit_active_edge_loop_set(), ED_uvedit_active_vert_loop_set(), edbm_add_edge_face_exec__tricky_finalize_sel(), edbm_mod_weighted_strength_exec(), edbm_rip_edge_invoke(), edbm_solidify_exec(), and edbm_vert_connect_path_exec().
|
static |
Definition at line 1142 of file bmesh_marking.cc.
References BMEditSelection::ele, BMEditSelection::htype, BMHeader::htype, and MEM_callocN().
Referenced by _bm_select_history_store_after_notest(), _bm_select_history_store_head_notest(), and _bm_select_history_store_notest().
|
nodiscard |
Get all element types present in a selection history.
Definition at line 1225 of file bmesh_marking.cc.
References bm, BM_EDGE, BM_FACE, BM_VERT, BMEditSelection::htype, and LISTBASE_FOREACH.
Referenced by edbm_vert_connect_path_exec().
Return a map from BMVert/BMEdge/BMFace -> BMEditSelection.
Definition at line 1274 of file bmesh_marking.cc.
References BLI_ghash_insert(), BLI_ghash_ptr_new(), BLI_listbase_is_empty(), bm, and LISTBASE_FOREACH.
Referenced by bmo_extrude_discrete_faces_exec(), and bmo_extrude_vert_indiv_exec().
| void BM_select_history_merge_from_targetmap | ( | BMesh * | bm, |
| GHash * | vert_map, | ||
| GHash * | edge_map, | ||
| GHash * | face_map, | ||
| bool | use_chain ) |
Map arguments may all be the same pointer.
Definition at line 1289 of file bmesh_marking.cc.
References _FLAG_OVERLAP, BLI_assert, BLI_freelinkN(), BLI_ghash_lookup(), bm, BM_EDGE, BM_ELEM_API_FLAG_DISABLE, BM_ELEM_API_FLAG_ENABLE, BM_ELEM_API_FLAG_TEST, BM_FACE, BM_VERT, BMESH_ASSERT, LISTBASE_FOREACH, and UNLIKELY.
Referenced by bmo_weld_verts_exec().
| void BM_select_history_validate | ( | BMesh * | bm | ) |
Definition at line 1213 of file bmesh_marking.cc.
References BLI_freelinkN(), bm, BM_elem_flag_test, BM_ELEM_SELECT, BMEditSelection::ele, and BMEditSelection::next.
Referenced by BM_mesh_select_flush_from_verts(), BM_mesh_select_mode_flush_ex(), BM_mesh_uvselect_sync_to_mesh(), bpy_bmeditselseq_validate(), ED_uvedit_select_sync_flush(), edbm_rip_invoke__edge(), uv_hide_exec(), and uv_mouse_select_multi().
| void BM_vert_hide_set | ( | BMVert * | v, |
| const bool | hide ) |
Definition at line 1515 of file bmesh_marking.cc.
References BLI_assert, BM_elem_flag_set, BM_elem_flag_test, BM_ELEM_HIDDEN, BM_ELEM_SELECT, BM_VERT, bmesh_disk_edge_next(), BMLoop::f, BMEdge::l, BMLoop::radial_next, and v.
Referenced by _bm_elem_hide_set().
Definition at line 155 of file bmesh_marking.cc.
References BM_elem_flag_test, BM_ELEM_SELECT, bmesh_disk_edge_next(), and v.
Referenced by BM_edge_select_set(), and BM_face_select_set().
|
static |
Definition at line 184 of file bmesh_marking.cc.
References BM_elem_flag_test, BM_ELEM_HIDDEN, bmesh_disk_edge_next(), and v.
Referenced by vert_flush_hide_set().
Select Vert.
Changes selection state of a single vertex in a mesh
Definition at line 620 of file bmesh_marking.cc.
References BLI_assert, bm, BM_elem_flag_disable, BM_elem_flag_enable, BM_elem_flag_test, BM_ELEM_HIDDEN, BM_ELEM_SELECT, BM_VERT, select, and v.
Referenced by _bm_elem_hide_set(), BM_edge_select_set(), BM_elem_select_set(), BM_face_select_set(), BM_mesh_bm_from_me(), BM_mesh_select_mode_clean_ex(), bm_mesh_select_mode_flush_edge_to_vert(), bm_mesh_select_mode_flush_face_to_vert_and_edge(), BM_mesh_uvselect_sync_to_mesh(), do_lasso_select_mesh__doSelectVert(), do_mesh_box_select__doSelectVert(), edbm_add_edge_face_exec__tricky_finalize_sel(), edbm_backbuf_check_and_select_verts(), edbm_dupli_extrude_cursor_invoke(), edbm_edge_split_selected_verts(), edbm_polybuild_face_at_cursor_invoke(), edbm_polybuild_split_at_cursor_invoke(), edbm_polybuild_transform_at_cursor_invoke(), edbm_rip_edge_invoke(), edbm_rip_invoke__vert(), edbm_select_axis_exec(), edbm_select_by_pole_count_exec(), edbm_select_linked_exec(), edbm_select_linked_pick_ex(), edbm_select_loose_exec(), EDBM_select_mirrored(), edbm_select_non_manifold_exec(), EDBM_select_pick(), edbm_select_random_exec(), EDBM_select_swap(), edbm_select_ungrouped_exec(), EDBM_selectmode_convert(), EDBM_selectmode_set(), mesh_circle_doSelectVert(), ringsel_finish(), blender::ed::object::select_editbmesh_hook(), EditMeshSymmetryHelper::set_hflag_on_mirror_verts(), similar_vert_select_exec(), TEST(), uv_hide_exec(), uvedit_edge_select_disable(), uvedit_edge_select_enable(), uvedit_uv_select_disable(), uvedit_uv_select_enable(), verttag_set_cb(), and blender::ed::object::vgroup_select_verts().
|
static |
Hide unless any connected elements are visible. Run this after hiding a connected face.
Definition at line 1510 of file bmesh_marking.cc.
References bm_edge_is_face_visible_any(), BM_elem_flag_set, BM_ELEM_HIDDEN, and e.
Referenced by BM_face_hide_set().
|
static |
Definition at line 123 of file bmesh_marking.cc.
References bm, BM_EDGES_OF_MESH, and recount_totsel().
Referenced by BM_mesh_select_mode_flush_ex(), and recount_totsels().
|
static |
Definition at line 128 of file bmesh_marking.cc.
References bm, BM_FACES_OF_MESH, and recount_totsel().
Referenced by BM_mesh_select_mode_flush_ex(), and recount_totsels().
|
static |
Definition at line 100 of file bmesh_marking.cc.
References BLI_parallel_range_settings_defaults(), bm, count, TaskParallelSettings::func_reduce, TaskParallelSettings::min_iter_per_thread, recount_totsels_get_range_func(), recount_totsels_reduce(), TaskParallelSettings::userdata_chunk, and TaskParallelSettings::userdata_chunk_size.
Referenced by recount_totedgesel(), recount_totfacesel(), recount_totsels_are_ok(), and recount_totvertsel().
|
static |
Definition at line 133 of file bmesh_marking.cc.
References bm, recount_totedgesel(), recount_totfacesel(), and recount_totvertsel().
Referenced by BM_mesh_select_flush_from_verts().
|
static |
Definition at line 141 of file bmesh_marking.cc.
References bm, BM_EDGES_OF_MESH, BM_FACES_OF_MESH, BM_VERTS_OF_MESH, and recount_totsel().
Referenced by BM_mesh_select_mode_flush_ex().
|
static |
Definition at line 83 of file bmesh_marking.cc.
References BLI_assert, BM_EDGES_OF_MESH, BM_FACES_OF_MESH, BM_VERTS_OF_MESH, ELEM, recount_totsels_range_edge_func(), recount_totsels_range_face_func(), and recount_totsels_range_vert_func().
Referenced by recount_totsel().
|
static |
Definition at line 52 of file bmesh_marking.cc.
References BM_elem_flag_test, BM_ELEM_SELECT, and count.
Referenced by recount_totsels_get_range_func().
|
static |
Definition at line 63 of file bmesh_marking.cc.
References BM_elem_flag_test, BM_ELEM_SELECT, and count.
Referenced by recount_totsels_get_range_func().
|
static |
Definition at line 41 of file bmesh_marking.cc.
References BM_elem_flag_test, BM_ELEM_SELECT, and count.
Referenced by recount_totsels_get_range_func().
|
static |
Definition at line 74 of file bmesh_marking.cc.
References SelectionCountChunkData::selection_len.
Referenced by recount_totsel().
|
static |
Definition at line 118 of file bmesh_marking.cc.
References bm, BM_VERTS_OF_MESH, and recount_totsel().
Referenced by BM_mesh_select_mode_flush_ex(), and recount_totsels().
|
static |
Hide unless any connected elements are visible. Run this after hiding a connected edge or face.
Definition at line 1501 of file bmesh_marking.cc.
References BM_elem_flag_set, BM_ELEM_HIDDEN, bm_vert_is_edge_visible_any(), and v.
Referenced by BM_edge_hide_set(), and BM_face_hide_set().