|
Blender V4.3
|
#include <cmath>#include <cstdlib>#include <cstring>#include "MEM_guardedalloc.h"#include "DNA_image_types.h"#include "DNA_material_types.h"#include "DNA_node_types.h"#include "DNA_object_types.h"#include "DNA_scene_types.h"#include "DNA_space_types.h"#include "BLI_alloca.h"#include "BLI_blenlib.h"#include "BLI_hash.h"#include "BLI_heap.h"#include "BLI_kdopbvh.h"#include "BLI_kdtree.h"#include "BLI_lasso_2d.hh"#include "BLI_math_geom.h"#include "BLI_math_matrix.h"#include "BLI_math_vector.h"#include "BLI_memarena.h"#include "BLI_polyfill_2d.h"#include "BLI_polyfill_2d_beautify.h"#include "BLI_utildefines.h"#include "BLT_translation.hh"#include "BKE_context.hh"#include "BKE_customdata.hh"#include "BKE_editmesh.hh"#include "BKE_layer.hh"#include "BKE_material.h"#include "BKE_mesh.hh"#include "BKE_mesh_mapping.hh"#include "BKE_report.hh"#include "DEG_depsgraph.hh"#include "DEG_depsgraph_query.hh"#include "ED_image.hh"#include "ED_mesh.hh"#include "ED_screen.hh"#include "ED_select_utils.hh"#include "ED_uvedit.hh"#include "RNA_access.hh"#include "RNA_define.hh"#include "RNA_enum_types.hh"#include "WM_api.hh"#include "WM_types.hh"#include "UI_view2d.hh"#include "uvedit_intern.hh"Go to the source code of this file.
Classes | |
| struct | UVOverlapData |
Macros | |
| #define | SET_SELECTION(value) |
| #define | NEIGHBORING_FACE_IS_SEL 1 |
| #define | CURR_FACE_IS_UNSEL 2 |
Enumerations | |
| enum | eUVSelectSimilar { UV_SSIM_AREA_UV = 1000 , UV_SSIM_AREA_3D , UV_SSIM_FACE , UV_SSIM_LENGTH_UV , UV_SSIM_LENGTH_3D , UV_SSIM_MATERIAL , UV_SSIM_OBJECT , UV_SSIM_PIN , UV_SSIM_SIDES , UV_SSIM_WINDING } |
Functions | |
| static void | uv_select_all_perform_multi_ex (const Scene *scene, Span< Object * > objects, int action, const Object *ob_exclude) |
(De)Select All Operator | |
| static void | uv_select_all_perform (const Scene *scene, Object *obedit, int action) |
| static void | uv_select_all_perform_multi (const Scene *scene, Span< Object * > objects, int action) |
| bool | uvedit_select_is_any_selected (const Scene *scene, Object *obedit) |
| bool | uvedit_select_is_any_selected_multi (const Scene *scene, const Span< Object * > objects) |
| static void | uv_select_all (const Scene *scene, BMEditMesh *em, bool select_all) |
| static void | uv_select_invert (const Scene *scene, BMEditMesh *em) |
| static void | uv_select_all_perform_multi_ex (const Scene *scene, const Span< Object * > objects, int action, const Object *ob_exclude) |
| static int | uv_select_all_exec (bContext *C, wmOperator *op) |
| void | UV_OT_select_all (wmOperatorType *ot) |
Select/Tag Flushing Utils | |
Utility functions to flush the uv-selection from tags. | |
| static void | uv_select_flush_from_tag_face (const Scene *scene, Object *obedit, const bool select) |
| static void | uv_select_flush_from_tag_loop (const Scene *scene, Object *obedit, const bool select) |
| static void | uv_select_flush_from_loop_edge_flag (const Scene *scene, BMEditMesh *em) |
| static void | uv_select_flush_from_tag_sticky_loc_internal (const Scene *scene, BMEditMesh *em, UvVertMap *vmap, const uint efa_index, BMLoop *l, const bool select, const BMUVOffsets offsets) |
Select Split Operator | |
| static void | uv_select_tag_update_for_object (Depsgraph *depsgraph, const ToolSettings *ts, Object *obedit) |
| static int | uv_select_split_exec (bContext *C, wmOperator *op) |
| void | UV_OT_select_split (wmOperatorType *ot) |
Active Selection Tracking | |
Currently we don't store loops in the selection history, store face/edge/vert combinations (needed for UV path selection). | |
| void | ED_uvedit_active_vert_loop_set (BMesh *bm, BMLoop *l) |
| BMLoop * | ED_uvedit_active_vert_loop_get (BMesh *bm) |
| void | ED_uvedit_active_edge_loop_set (BMesh *bm, BMLoop *l) |
| BMLoop * | ED_uvedit_active_edge_loop_get (BMesh *bm) |
Visibility and Selection Utilities | |
| char | ED_uvedit_select_mode_get (const Scene *scene) |
| void | ED_uvedit_select_sync_flush (const ToolSettings *ts, BMEditMesh *em, const bool select) |
| static void | uvedit_vertex_select_tagged (BMEditMesh *em, Scene *scene, bool select, const BMUVOffsets offsets) |
| bool | uvedit_face_visible_test_ex (const ToolSettings *ts, BMFace *efa) |
| bool | uvedit_face_visible_test (const Scene *scene, BMFace *efa) |
| bool | uvedit_face_select_test_ex (const ToolSettings *ts, BMFace *efa, const BMUVOffsets offsets) |
| bool | uvedit_face_select_test (const Scene *scene, BMFace *efa, const BMUVOffsets offsets) |
| void | uvedit_face_select_set_with_sticky (const Scene *scene, BMEditMesh *em, BMFace *efa, const bool select, const bool do_history, const BMUVOffsets offsets) |
| void | uvedit_face_select_shared_vert (const Scene *scene, BMEditMesh *em, BMFace *efa, const bool select, const bool do_history, const BMUVOffsets offsets) |
| void | uvedit_face_select_set (const Scene *scene, BMesh *bm, BMFace *efa, const bool select, const bool do_history, const BMUVOffsets offsets) |
| Select UV Face. | |
| void | uvedit_face_select_enable (const Scene *scene, BMesh *bm, BMFace *efa, const bool do_history, const BMUVOffsets offsets) |
| void | uvedit_face_select_disable (const Scene *scene, BMesh *bm, BMFace *efa, const BMUVOffsets offsets) |
| bool | uvedit_edge_select_test_ex (const ToolSettings *ts, const BMLoop *l, const BMUVOffsets offsets) |
| bool | uvedit_edge_select_test (const Scene *scene, BMLoop *l, const BMUVOffsets offsets) |
| void | uvedit_edge_select_set_with_sticky (const Scene *scene, BMEditMesh *em, BMLoop *l, const bool select, const bool do_history, const BMUVOffsets offsets) |
| void | uvedit_edge_select_shared_vert (const Scene *scene, BMEditMesh *em, BMLoop *l, const bool select, const int sticky_flag, const bool do_history, const BMUVOffsets offsets) |
| void | uvedit_edge_select_set_noflush (const Scene *scene, BMLoop *l, const bool select, const int sticky_flag, const BMUVOffsets offsets) |
| void | uvedit_edge_select_set (const Scene *scene, BMesh *bm, BMLoop *l, const bool select, const bool do_history, const BMUVOffsets offsets) |
| Select UV Edge. | |
| void | uvedit_edge_select_enable (const Scene *scene, BMesh *bm, BMLoop *l, const bool do_history, const BMUVOffsets offsets) |
| void | uvedit_edge_select_disable (const Scene *scene, BMesh *bm, BMLoop *l, const BMUVOffsets offsets) |
| bool | uvedit_uv_select_test_ex (const ToolSettings *ts, const BMLoop *l, const BMUVOffsets offsets) |
| bool | uvedit_uv_select_test (const Scene *scene, BMLoop *l, const BMUVOffsets offsets) |
| void | uvedit_uv_select_set_with_sticky (const Scene *scene, BMEditMesh *em, BMLoop *l, const bool select, const bool do_history, const BMUVOffsets offsets) |
| void | uvedit_uv_select_shared_vert (const Scene *scene, BMEditMesh *em, BMLoop *l, const bool select, const int sticky_flag, const bool do_history, const BMUVOffsets offsets) |
| void | uvedit_uv_select_set (const Scene *scene, BMesh *bm, BMLoop *l, const bool select, const bool do_history, const BMUVOffsets offsets) |
| Select UV Vertex. | |
| void | uvedit_uv_select_enable (const Scene *scene, BMesh *bm, BMLoop *l, const bool do_history, const BMUVOffsets offsets) |
| void | uvedit_uv_select_disable (const Scene *scene, BMesh *bm, BMLoop *l, const BMUVOffsets offsets) |
| static BMLoop * | uvedit_loop_find_other_radial_loop_with_visible_face (const Scene *scene, BMLoop *l_src, const BMUVOffsets offsets) |
| static BMLoop * | uvedit_loop_find_other_boundary_loop_with_visible_face (const Scene *scene, BMLoop *l_edge, BMVert *v_pivot, const BMUVOffsets offsets) |
Find Nearest Elements | |
| UvNearestHit | uv_nearest_hit_init_dist_px (const View2D *v2d, const float dist_px) |
| UvNearestHit | uv_nearest_hit_init_max (const View2D *v2d) |
| UvNearestHit | uv_nearest_hit_init_max_default () |
| bool | uv_find_nearest_edge (Scene *scene, Object *obedit, const float co[2], const float penalty, UvNearestHit *hit) |
| bool | uv_find_nearest_edge_multi (Scene *scene, const Span< Object * > objects, const float co[2], const float penalty, UvNearestHit *hit) |
| bool | uv_find_nearest_face_ex (Scene *scene, Object *obedit, const float co[2], UvNearestHit *hit, const bool only_in_face) |
| bool | uv_find_nearest_face (Scene *scene, Object *obedit, const float co[2], UvNearestHit *hit) |
| bool | uv_find_nearest_face_multi_ex (Scene *scene, const Span< Object * > objects, const float co[2], UvNearestHit *hit, const bool only_in_face) |
| bool | uv_find_nearest_face_multi (Scene *scene, const Span< Object * > objects, const float co[2], UvNearestHit *hit) |
| static bool | uv_nearest_between (const BMLoop *l, const float co[2], const int cd_loop_uv_offset) |
| bool | uv_find_nearest_vert (Scene *scene, Object *obedit, float const co[2], const float penalty_dist, UvNearestHit *hit) |
| bool | uv_find_nearest_vert_multi (Scene *scene, const Span< Object * > objects, float const co[2], const float penalty_dist, UvNearestHit *hit) |
| static bool | uvedit_nearest_uv (const Scene *scene, Object *obedit, const float co[2], const float scale[2], const bool ignore_selected, float *dist_sq, float r_uv[2]) |
| bool | ED_uvedit_nearest_uv_multi (const View2D *v2d, const Scene *scene, const Span< Object * > objects, const float mval_fl[2], const bool ignore_selected, float *dist_sq, float r_uv[2]) |
Find Nearest to Element | |
These functions are quite specialized, useful when sync select is enabled and we want to pick an active UV vertex/edge from the active element which may have multiple UVs split out. | |
| BMLoop * | uv_find_nearest_loop_from_vert (Scene *scene, Object *obedit, BMVert *v, const float co[2]) |
| BMLoop * | uv_find_nearest_loop_from_edge (Scene *scene, Object *obedit, BMEdge *e, const float co[2]) |
Helper functions for UV selection. | |
| bool | uvedit_vert_is_edge_select_any_other (const Scene *scene, BMLoop *l, const BMUVOffsets offsets) |
| bool | uvedit_vert_is_face_select_any_other (const Scene *scene, BMLoop *l, const BMUVOffsets offsets) |
| bool | uvedit_vert_is_all_other_faces_selected (const Scene *scene, BMLoop *l, const BMUVOffsets offsets) |
| static void | bm_clear_uv_vert_selection (const Scene *scene, BMesh *bm, const BMUVOffsets offsets) |
UV Select-Mode Flushing | |
| void | ED_uvedit_selectmode_flush (const Scene *scene, BMEditMesh *em) |
| UV Select Mode Flush. | |
UV Flush selection (up/down) | |
| void | uvedit_select_flush (const Scene *scene, BMEditMesh *em) |
| void | uvedit_deselect_flush (const Scene *scene, BMEditMesh *em) |
Face Loop Select | |
| static int | uv_select_faceloop (Scene *scene, Object *obedit, UvNearestHit *hit, const bool extend) |
Edge Ring Select | |
| static int | uv_select_edgering (Scene *scene, Object *obedit, UvNearestHit *hit, const bool extend) |
Select Linked | |
| static void | uv_select_linked_multi (Scene *scene, const Span< Object * > objects, UvNearestHit *hit, const bool extend, bool deselect, const bool toggle, const bool select_faces) |
| const float * | uvedit_first_selected_uv_from_vertex (Scene *scene, BMVert *eve, const BMUVOffsets offsets) |
Select More/Less Operator | |
| static int | uv_select_more_less (bContext *C, const bool select) |
| static int | uv_select_more_exec (bContext *C, wmOperator *) |
| void | UV_OT_select_more (wmOperatorType *ot) |
| static int | uv_select_less_exec (bContext *C, wmOperator *) |
| void | UV_OT_select_less (wmOperatorType *ot) |
Mouse Select Operator | |
| static bool | uv_mouse_select_multi (bContext *C, const Span< Object * > objects, const float co[2], const SelectPick_Params *params) |
| static bool | uv_mouse_select (bContext *C, const float co[2], const SelectPick_Params *params) |
| static int | uv_select_exec (bContext *C, wmOperator *op) |
| static int | uv_select_invoke (bContext *C, wmOperator *op, const wmEvent *event) |
| void | UV_OT_select (wmOperatorType *ot) |
Edge Loop Select Operator | |
| static int | uv_select_loop_exec (bContext *C, wmOperator *op) |
| static int | uv_select_loop_invoke (bContext *C, wmOperator *op, const wmEvent *event) |
| void | UV_OT_select_loop (wmOperatorType *ot) |
Edge Ring Select Operator | |
| static int | uv_select_edge_ring_exec (bContext *C, wmOperator *op) |
| static int | uv_select_edge_ring_invoke (bContext *C, wmOperator *op, const wmEvent *event) |
| void | UV_OT_select_edge_ring (wmOperatorType *ot) |
Select Linked Operator | |
| static int | uv_select_linked_internal (bContext *C, wmOperator *op, const wmEvent *event, bool pick) |
| static int | uv_select_linked_exec (bContext *C, wmOperator *op) |
| void | UV_OT_select_linked (wmOperatorType *ot) |
Select Linked (Cursor Pick) Operator | |
| static int | uv_select_linked_pick_invoke (bContext *C, wmOperator *op, const wmEvent *event) |
| static int | uv_select_linked_pick_exec (bContext *C, wmOperator *op) |
| void | UV_OT_select_linked_pick (wmOperatorType *ot) |
Box Select Operator | |
| static int | uv_box_select_exec (bContext *C, wmOperator *op) |
| void | UV_OT_select_box (wmOperatorType *ot) |
Circle Select Operator | |
| static bool | uv_circle_select_is_point_inside (const float uv[2], const float offset[2], const float ellipse[2]) |
| static bool | uv_circle_select_is_edge_inside (const float uv_a[2], const float uv_b[2], const float offset[2], const float ellipse[2]) |
| static int | uv_circle_select_exec (bContext *C, wmOperator *op) |
| void | UV_OT_select_circle (wmOperatorType *ot) |
Lasso Select Operator | |
| static bool | do_lasso_select_mesh_uv_is_point_inside (const ARegion *region, const rcti *clip_rect, const Span< int2 > mcoords, const float co_test[2]) |
| static bool | do_lasso_select_mesh_uv_is_edge_inside (const ARegion *region, const rcti *clip_rect, const Span< int2 > mcoords, const float co_test_a[2], const float co_test_b[2]) |
| static bool | do_lasso_select_mesh_uv (bContext *C, const Span< int2 > mcoords, const eSelectOp sel_op) |
| static int | uv_lasso_select_exec (bContext *C, wmOperator *op) |
| void | UV_OT_select_lasso (wmOperatorType *ot) |
Select Pinned UVs Operator | |
| static int | uv_select_pinned_exec (bContext *C, wmOperator *op) |
| void | UV_OT_select_pinned (wmOperatorType *ot) |
Select Overlap Operator | |
| BLI_INLINE uint | overlap_hash (const void *overlap_v) |
| BLI_INLINE bool | overlap_cmp (const void *a_v, const void *b_v) |
| static bool | overlap_tri_tri_uv_test (const float t1[3][2], const float t2[3][2], const float endpoint_bias) |
| static int | uv_select_overlap (bContext *C, const bool extend) |
| static int | uv_select_overlap_exec (bContext *C, wmOperator *op) |
| void | UV_OT_select_overlap (wmOperatorType *ot) |
Selected Elements as Arrays (Vertex, Edge & Faces) | |
These functions return single elements per connected vertex/edge. So an edge that has two connected edge loops only assigns one loop in the array. | |
| BMFace ** | ED_uvedit_selected_faces (const Scene *scene, BMesh *bm, int len_max, int *r_faces_len) |
| BMLoop ** | ED_uvedit_selected_edges (const Scene *scene, BMesh *bm, int len_max, int *r_edges_len) |
| BMLoop ** | ED_uvedit_selected_verts (const Scene *scene, BMesh *bm, int len_max, int *r_verts_len) |
Select Mode UV Vert/Edge/Face/Island Operator | |
| static void | uv_isolate_selected_islands (const Scene *scene, BMEditMesh *em, const BMUVOffsets offsets) |
| void | ED_uvedit_selectmode_clean (const Scene *scene, Object *obedit) |
| UV Select Mode set. | |
| void | ED_uvedit_selectmode_clean_multi (bContext *C) |
| static int | uv_select_mode_exec (bContext *C, wmOperator *op) |
| static int | uv_select_mode_invoke (bContext *C, wmOperator *op, const wmEvent *) |
| void | UV_OT_select_mode (wmOperatorType *ot) |
Edge Loop Select | |
| enum | eUVEdgeLoopBoundaryMode { UV_EDGE_LOOP_BOUNDARY_LOOP = 1 , UV_EDGE_LOOP_BOUNDARY_ALL = 2 } |
| static BMLoop * | bm_select_edgeloop_double_side_next (const Scene *scene, BMLoop *l_step, BMVert *v_from, const BMUVOffsets offsets) |
| static BMLoop * | bm_select_edgeloop_single_side_next (const Scene *scene, BMLoop *l_step, BMVert *v_from, const BMUVOffsets offsets) |
| static void | bm_loop_tags_clear (BMesh *bm) |
| static void | uv_select_edgeloop_double_side_tag (const Scene *scene, BMEditMesh *em, BMLoop *l_init_pair[2], const BMUVOffsets offsets) |
| static void | uv_select_edgeloop_single_side_tag (const Scene *scene, BMEditMesh *em, BMLoop *l_init, const BMUVOffsets offsets, enum eUVEdgeLoopBoundaryMode boundary_mode, int r_count_by_select[2]) |
| static int | uv_select_edgeloop (Scene *scene, Object *obedit, UvNearestHit *hit, const bool extend) |
Shared Edge Loop/Ring Select Operator Functions | |
| enum | eUVLoopGenericType { UV_LOOP_SELECT = 1 , UV_RING_SELECT = 2 } |
| static int | uv_mouse_select_loop_generic_multi (bContext *C, const Span< Object * > objects, const float co[2], const bool extend, enum eUVLoopGenericType loop_type) |
| static int | uv_mouse_select_loop_generic (bContext *C, const float co[2], const bool extend, enum eUVLoopGenericType loop_type) |
| #define CURR_FACE_IS_UNSEL 2 |
Referenced by uv_select_more_less().
| #define NEIGHBORING_FACE_IS_SEL 1 |
Referenced by uv_select_more_less().
| #define SET_SELECTION | ( | value | ) |
Referenced by uv_select_linked_multi().
Mode for selecting edge loops at boundaries.
| Enumerator | |
|---|---|
| UV_EDGE_LOOP_BOUNDARY_LOOP | Delimit at face corners (don't walk over multiple edges in the same face). |
| UV_EDGE_LOOP_BOUNDARY_ALL | Don't delimit, walk over the all connected boundary loops. |
Definition at line 1380 of file uvedit_select.cc.
| enum eUVLoopGenericType |
| Enumerator | |
|---|---|
| UV_LOOP_SELECT | |
| UV_RING_SELECT | |
Definition at line 2739 of file uvedit_select.cc.
| enum eUVSelectSimilar |
| Enumerator | |
|---|---|
| UV_SSIM_AREA_UV | |
| UV_SSIM_AREA_3D | |
| UV_SSIM_FACE | |
| UV_SSIM_LENGTH_UV | |
| UV_SSIM_LENGTH_3D | |
| UV_SSIM_MATERIAL | |
| UV_SSIM_OBJECT | |
| UV_SSIM_PIN | |
| UV_SSIM_SIDES | |
| UV_SSIM_WINDING | |
Definition at line 89 of file uvedit_select.cc.
|
static |
Definition at line 1255 of file uvedit_select.cc.
References bm, BM_ELEM_CD_SET_BOOL, BM_FACES_OF_MESH, BM_ITER_ELEM, BM_ITER_MESH, BM_LOOPS_OF_FACE, l, BMUVOffsets::select_vert, and uvedit_face_visible_test().
Referenced by uv_select_flush_from_loop_edge_flag().
|
static |
Definition at line 1415 of file uvedit_select.cc.
References bm, BM_elem_flag_disable, BM_ELEM_TAG, BM_FACES_OF_MESH, BM_ITER_ELEM, BM_ITER_MESH, and BM_LOOPS_OF_FACE.
Referenced by ED_uvedit_selectmode_clean(), uv_select_edgeloop_double_side_tag(), and uv_select_edgeloop_single_side_tag().
|
static |
Definition at line 1387 of file uvedit_select.cc.
References BM_edge_other_vert(), BMLoop::e, BMLoop::f, BMFace::len, BMLoop::next, BMLoop::prev, uvedit_loop_find_other_radial_loop_with_visible_face(), and BMLoop::v.
Referenced by uv_select_edgeloop_double_side_tag().
|
static |
Definition at line 1404 of file uvedit_select.cc.
References BM_edge_other_vert(), BMLoop::e, and uvedit_loop_find_other_boundary_loop_with_visible_face().
Referenced by uv_select_edgeloop_single_side_tag().
|
static |
Definition at line 3948 of file uvedit_select.cc.
References BKE_editmesh_from_object(), BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(), BLI_lasso_boundbox(), BMEditMesh::bm, BM_ELEM_CD_GET_FLOAT_P, BM_elem_flag_disable, BM_elem_flag_enable, BM_ELEM_TAG, BM_FACE_FIRST_LOOP, BM_face_uv_calc_center_median(), BM_FACES_OF_MESH, BM_ITER_ELEM, BM_ITER_MESH, BM_LOOPS_OF_FACE, BM_mesh_elem_hflag_disable_all(), BM_uv_map_ensure_edge_select_attr(), BM_uv_map_ensure_vert_select_attr(), BM_uv_map_get_offsets(), BM_VERT, CD_PROP_FLOAT2, CTX_data_ensure_evaluated_depsgraph(), CTX_data_scene(), CTX_data_view_layer(), CTX_wm_region(), CustomData_get_active_layer_name(), depsgraph, do_lasso_select_mesh_uv_is_edge_inside(), do_lasso_select_mesh_uv_is_point_inside(), ED_uvedit_select_sync_flush(), ED_uvedit_selectmode_flush(), l, BMesh::ldata, UvNearestHit::ob, BMLoop::prev, SCE_SELECT_EDGE, SCE_SELECT_FACE, SEL_DESELECT, SEL_OP_SUB, SEL_OP_USE_PRE_DESELECT, select(), ToolSettings::selectmode, SI_STICKY_VERTEX, BMUVOffsets::uv, ToolSettings::uv_flag, uv_select_all_perform_multi(), UV_SELECT_EDGE, UV_SELECT_FACE, uv_select_flush_from_tag_face(), UV_SELECT_ISLAND, uv_select_linked_multi(), uv_select_tag_update_for_object(), ToolSettings::uv_selectmode, ToolSettings::uv_sticky, UV_SYNC_SELECTION, uvedit_edge_select_set_with_sticky(), uvedit_face_select_test(), uvedit_face_visible_test(), uvedit_uv_select_set(), uvedit_uv_select_test(), uvedit_vertex_select_tagged(), and BMLoop::v.
Referenced by uv_lasso_select_exec().
|
static |
Definition at line 3930 of file uvedit_select.cc.
References BLI_lasso_is_edge_inside(), BLI_rcti_isect_segment(), UI_view2d_view_to_region_segment_clip(), UNPACK2, and V2D_IS_CLIPPED.
Referenced by do_lasso_select_mesh_uv().
|
static |
Definition at line 3914 of file uvedit_select.cc.
References BLI_lasso_is_point_inside(), BLI_rcti_isect_pt_v(), UI_view2d_view_to_region_clip(), and V2D_IS_CLIPPED.
Referenced by do_lasso_select_mesh_uv().
Definition at line 140 of file uvedit_select.cc.
References bm, BM_EDGE, BM_FACE, BM_face_edge_share_loop(), BMEditSelection::ele, BMEditSelection::htype, ListBase::last, BMEditSelection::prev, and BMesh::selected.
Referenced by uv_shortest_path_pick_exec(), and uv_shortest_path_pick_invoke().
Definition at line 131 of file uvedit_select.cc.
References bm, BM_select_history_clear(), BM_select_history_remove, BM_select_history_store_notest, BMLoop::e, BMLoop::f, and l.
Referenced by mouse_mesh_uv_shortest_path_edge(), and uv_mouse_select_multi().
Definition at line 118 of file uvedit_select.cc.
References bm, BM_FACE, BM_face_vert_share_loop(), BM_VERT, BMEditSelection::ele, BMEditSelection::htype, ListBase::last, BMEditSelection::prev, and BMesh::selected.
Referenced by uv_shortest_path_pick_exec(), and uv_shortest_path_pick_invoke().
Definition at line 109 of file uvedit_select.cc.
References bm, BM_select_history_clear(), BM_select_history_remove, BM_select_history_store_notest, BMLoop::f, l, and BMLoop::v.
Referenced by mouse_mesh_uv_shortest_path_vert(), and uv_mouse_select_multi().
| bool ED_uvedit_nearest_uv_multi | ( | const View2D * | v2d, |
| const Scene * | scene, | ||
| const Span< Object * > | objects, | ||
| const float | mval_fl[2], | ||
| const bool | ignore_selected, | ||
| float * | dist_sq, | ||
| float | r_uv[2] ) |
Definition at line 1103 of file uvedit_select.cc.
References sub_v2_v2v2(), UI_view2d_scale_get(), UI_view2d_view_to_region_fl(), and uvedit_nearest_uv().
| char ED_uvedit_select_mode_get | ( | const Scene * | scene | ) |
Intentionally don't return UV_SELECT_ISLAND as it's not an element type. In this case return UV_SELECT_VERTEX as a fallback.
Definition at line 159 of file uvedit_select.cc.
References SCE_SELECT_EDGE, SCE_SELECT_FACE, SCE_SELECT_VERTEX, ToolSettings::selectmode, ToolSettings::uv_flag, UV_SELECT_EDGE, UV_SELECT_FACE, UV_SELECT_VERTEX, ToolSettings::uv_selectmode, and UV_SYNC_SELECTION.
Referenced by transform_mesh_uv_edge_slide_data_create(), uv_mouse_select_loop_generic_multi(), uv_shortest_path_pick_ex(), uv_shortest_path_pick_exec(), uv_shortest_path_pick_invoke(), and uv_shortest_path_select_exec().
| void ED_uvedit_select_sync_flush | ( | const ToolSettings * | ts, |
| BMEditMesh * | em, | ||
| const bool | select ) |
Definition at line 189 of file uvedit_select.cc.
References BMEditMesh::bm, BM_select_history_validate(), EDBM_deselect_flush(), EDBM_select_flush(), EDBM_selectmode_flush(), SCE_SELECT_FACE, SCE_SELECT_VERTEX, select(), ToolSettings::selectmode, ToolSettings::uv_flag, and UV_SYNC_SELECTION.
Referenced by do_lasso_select_mesh_uv(), uv_box_select_exec(), uv_circle_select_exec(), and uv_shortest_path_pick_ex().
| BMLoop ** ED_uvedit_selected_edges | ( | const Scene * | scene, |
| BMesh * | bm, | ||
| int | len_max, | ||
| int * | r_edges_len ) |
Definition at line 5267 of file uvedit_select.cc.
References BLI_assert, bm, BM_elem_flag_disable, BM_elem_flag_enable, BM_elem_flag_test, BM_ELEM_TAG, BM_FACES_OF_MESH, BM_ITER_ELEM, BM_ITER_MESH, BM_loop_uv_share_edge_check(), BM_LOOPS_OF_FACE, BM_uv_map_get_offsets(), CLAMP_MAX, MEM_mallocN, MEM_reallocN, BMLoop::radial_next, BMesh::totloop, BMUVOffsets::uv, uvedit_edge_select_test(), and uvedit_face_visible_test().
Referenced by uv_shortest_path_select_exec().
| BMFace ** ED_uvedit_selected_faces | ( | const Scene * | scene, |
| BMesh * | bm, | ||
| int | len_max, | ||
| int * | r_faces_len ) |
Definition at line 5238 of file uvedit_select.cc.
References bm, BM_FACES_OF_MESH, BM_ITER_MESH, BM_uv_map_get_offsets(), CLAMP_MAX, faces, MEM_mallocN, MEM_reallocN, BMesh::totface, uvedit_face_select_test(), and uvedit_face_visible_test().
Referenced by uv_shortest_path_select_exec().
| BMLoop ** ED_uvedit_selected_verts | ( | const Scene * | scene, |
| BMesh * | bm, | ||
| int | len_max, | ||
| int * | r_verts_len ) |
Definition at line 5325 of file uvedit_select.cc.
References BLI_assert, bm, BM_ELEM_CD_GET_BOOL, BM_elem_flag_disable, BM_elem_flag_enable, BM_elem_flag_test, BM_ELEM_TAG, BM_FACES_OF_MESH, BM_ITER_ELEM, BM_ITER_MESH, BM_loop_uv_share_vert_check(), BM_LOOPS_OF_FACE, BM_LOOPS_OF_VERT, BM_uv_map_get_offsets(), CLAMP_MAX, MEM_mallocN, MEM_reallocN, BMUVOffsets::select_vert, BMesh::totloop, BMUVOffsets::uv, uvedit_face_visible_test(), BMLoop::v, and verts.
Referenced by uv_shortest_path_select_exec().
UV Select Mode set.
Updates selection state for UVs based on the select mode and sticky mode. Similar to EDBM_selectmode_set.
Definition at line 5449 of file uvedit_select.cc.
References BKE_editmesh_from_object(), BLI_assert, BMEditMesh::bm, BM_elem_flag_disable, BM_elem_flag_enable, BM_ELEM_TAG, BM_FACES_OF_MESH, BM_ITER_ELEM, BM_ITER_MESH, bm_loop_tags_clear(), BM_LOOPS_OF_FACE, BM_uv_map_ensure_edge_select_attr(), BM_uv_map_ensure_vert_select_attr(), BM_uv_map_get_offsets(), CD_PROP_FLOAT2, CustomData_get_active_layer_name(), ED_uvedit_selectmode_flush(), l, BMesh::ldata, SI_STICKY_DISABLE, ToolSettings::uv_flag, uv_isolate_selected_islands(), UV_SELECT_EDGE, UV_SELECT_FACE, uv_select_flush_from_loop_edge_flag(), uv_select_flush_from_tag_face(), uv_select_flush_from_tag_loop(), UV_SELECT_ISLAND, UV_SELECT_VERTEX, ToolSettings::uv_selectmode, ToolSettings::uv_sticky, UV_SYNC_SELECTION, uvedit_edge_select_set_noflush(), uvedit_edge_select_test(), uvedit_face_select_set(), uvedit_face_select_test(), uvedit_face_visible_test(), and uvedit_uv_select_test().
Referenced by ED_uvedit_selectmode_clean_multi().
| void ED_uvedit_selectmode_clean_multi | ( | bContext * | C | ) |
Definition at line 5520 of file uvedit_select.cc.
References BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(), CTX_data_ensure_evaluated_depsgraph(), CTX_data_scene(), CTX_data_view_layer(), depsgraph, ED_uvedit_selectmode_clean(), and uv_select_tag_update_for_object().
Referenced by uv_select_mode_exec().
| void ED_uvedit_selectmode_flush | ( | const Scene * | scene, |
| BMEditMesh * | em ) |
UV Select Mode Flush.
Flushes selections upwards as dictated by the UV select mode.
Definition at line 1280 of file uvedit_select.cc.
References BLI_assert, BMEditMesh::bm, BM_ELEM_CD_GET_BOOL, BM_ELEM_CD_SET_BOOL, BM_FACES_OF_MESH, BM_ITER_ELEM, BM_ITER_MESH, BM_LOOPS_OF_FACE, BM_uv_map_ensure_edge_select_attr(), BM_uv_map_ensure_vert_select_attr(), BM_uv_map_get_offsets(), CD_PROP_FLOAT2, CustomData_get_active_layer_name(), l, BMesh::ldata, BMLoop::next, BMUVOffsets::select_edge, BMUVOffsets::select_vert, UNUSED_VARS_NDEBUG, ToolSettings::uv_flag, UV_SELECT_VERTEX, ToolSettings::uv_selectmode, UV_SYNC_SELECTION, and uvedit_face_visible_test().
Referenced by do_lasso_select_mesh_uv(), ED_uvedit_selectmode_clean(), uv_box_select_exec(), uv_circle_select_exec(), uv_mouse_select_loop_generic_multi(), uv_mouse_select_multi(), uv_select_pinned_exec(), and uv_shortest_path_pick_ex().
|
static |
Definition at line 4558 of file uvedit_select.cc.
References BLI_assert, BLI_assert_unreachable, BM_ELEM_CD_GET_BOOL, BM_ELEM_CD_GET_FLOAT_P, BM_face_calc_area_uv(), BM_face_calc_area_with_mat3(), BM_FACES_OF_EDGE, BM_ITER_ELEM, e, len_v2v2(), len_v3v3(), BMUVOffsets::pin, result, BMUVOffsets::uv, UV_SSIM_AREA_3D, UV_SSIM_AREA_UV, UV_SSIM_LENGTH_3D, UV_SSIM_LENGTH_UV, UV_SSIM_PIN, and UV_SSIM_SIDES.
Referenced by uv_select_similar_edge_exec().
|
static |
Definition at line 4617 of file uvedit_select.cc.
References BLI_assert, BLI_assert_unreachable, BM_ELEM_CD_GET_BOOL, BM_face_calc_area_uv(), BM_face_calc_area_uv_signed(), BM_face_calc_area_with_mat3(), BM_ITER_ELEM, BM_LOOPS_OF_FACE, l, BMUVOffsets::pin, result, signum_i(), BMUVOffsets::uv, UV_SSIM_AREA_3D, UV_SSIM_AREA_UV, UV_SSIM_MATERIAL, UV_SSIM_OBJECT, UV_SSIM_PIN, UV_SSIM_SIDES, and UV_SSIM_WINDING.
Referenced by uv_select_similar_face_exec().
|
static |
Definition at line 4656 of file uvedit_select.cc.
References BLI_assert, BLI_assert_unreachable, BM_face_calc_area_uv(), BM_face_calc_area_with_mat3(), FaceIsland::faces, FaceIsland::faces_len, result, BMUVOffsets::uv, UV_SSIM_AREA_3D, UV_SSIM_AREA_UV, and UV_SSIM_FACE.
Referenced by uv_select_similar_island_exec().
|
static |
Definition at line 4513 of file uvedit_select.cc.
References BLI_assert, BLI_assert_unreachable, BM_EDGES_OF_VERT, BM_ELEM_CD_GET_BOOL, BM_face_calc_area_uv(), BM_face_calc_area_with_mat3(), BM_FACES_OF_VERT, BM_ITER_ELEM, e, BMUVOffsets::pin, result, BMUVOffsets::uv, UV_SSIM_AREA_3D, UV_SSIM_AREA_UV, UV_SSIM_PIN, and UV_SSIM_SIDES.
Referenced by uv_select_similar_vert_exec().
| BLI_INLINE bool overlap_cmp | ( | const void * | a_v, |
| const void * | b_v ) |
| BLI_INLINE uint overlap_hash | ( | const void * | overlap_v | ) |
Definition at line 4222 of file uvedit_select.cc.
References BLI_hash_int_2d(), BVHTreeOverlap::indexA, and BVHTreeOverlap::indexB.
Referenced by uv_select_overlap().
|
static |
Specialized 2D triangle intersection for detecting UV overlap:
Definition at line 4256 of file uvedit_select.cc.
References isect_point_tri_v2(), isect_seg_seg_v2_point_ex(), mid_v2_v2v2v2(), and UNPACK3.
Referenced by uv_select_overlap().
|
static |
Definition at line 3496 of file uvedit_select.cc.
References BKE_editmesh_from_object(), BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(), BLI_rctf_isect_pt_v(), BLI_rctf_isect_segment(), BMEditMesh::bm, BM_ELEM_CD_GET_BOOL, BM_ELEM_CD_GET_FLOAT_P, BM_elem_flag_disable, BM_elem_flag_enable, BM_ELEM_TAG, BM_FACE_FIRST_LOOP, BM_face_uv_calc_center_median(), BM_FACES_OF_MESH, BM_ITER_ELEM, BM_ITER_MESH, BM_LOOPS_OF_FACE, BM_mesh_elem_hflag_disable_all(), BM_uv_map_ensure_edge_select_attr(), BM_uv_map_ensure_pin_attr(), BM_uv_map_ensure_vert_select_attr(), BM_uv_map_get_offsets(), BM_VERT, CD_PROP_FLOAT2, CTX_data_ensure_evaluated_depsgraph(), CTX_data_scene(), CTX_data_view_layer(), CTX_wm_region(), CustomData_get_active_layer_name(), depsgraph, ED_uvedit_select_sync_flush(), ED_uvedit_selectmode_flush(), l, BMesh::ldata, UvNearestHit::ob, OPERATOR_CANCELLED, OPERATOR_FINISHED, BMUVOffsets::pin, BMLoop::prev, wmOperator::ptr, RNA_boolean_get(), RNA_enum_get(), SCE_SELECT_EDGE, SCE_SELECT_FACE, SEL_DESELECT, SEL_OP_SUB, SEL_OP_USE_PRE_DESELECT, select(), ToolSettings::selectmode, SI_STICKY_VERTEX, UI_view2d_region_to_view_rctf(), BMUVOffsets::uv, ToolSettings::uv_flag, uv_select_all_perform_multi(), UV_SELECT_EDGE, UV_SELECT_FACE, uv_select_flush_from_tag_face(), UV_SELECT_ISLAND, uv_select_linked_multi(), uv_select_tag_update_for_object(), ToolSettings::uv_selectmode, ToolSettings::uv_sticky, UV_SYNC_SELECTION, uvedit_edge_select_set_with_sticky(), uvedit_face_visible_test(), uvedit_uv_select_set(), uvedit_uv_select_test(), uvedit_vertex_select_tagged(), BMLoop::v, and WM_operator_properties_border_to_rctf().
Referenced by UV_OT_select_box().
|
static |
Definition at line 3733 of file uvedit_select.cc.
References BKE_editmesh_from_object(), BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(), BMEditMesh::bm, BM_ELEM_CD_GET_FLOAT_P, BM_elem_flag_disable, BM_elem_flag_enable, BM_ELEM_TAG, BM_FACE_FIRST_LOOP, BM_face_uv_calc_center_median(), BM_FACES_OF_MESH, BM_ITER_ELEM, BM_ITER_MESH, BM_LOOPS_OF_FACE, BM_mesh_elem_hflag_disable_all(), BM_uv_map_ensure_edge_select_attr(), BM_uv_map_ensure_vert_select_attr(), BM_uv_map_get_offsets(), BM_VERT, CD_PROP_FLOAT2, CTX_data_ensure_evaluated_depsgraph(), CTX_data_scene(), CTX_data_view_layer(), CTX_wm_region(), CTX_wm_space_image(), wmOperator::customdata, CustomData_get_active_layer_name(), depsgraph, ED_select_op_modal(), ED_space_image_get_size(), ED_space_image_get_zoom(), ED_uvedit_select_sync_flush(), ED_uvedit_selectmode_flush(), l, BMesh::ldata, UvNearestHit::ob, OPERATOR_CANCELLED, OPERATOR_FINISHED, BMLoop::prev, wmOperator::ptr, RNA_enum_get(), RNA_int_get(), SCE_SELECT_EDGE, SCE_SELECT_FACE, SEL_DESELECT, SEL_OP_SUB, SEL_OP_USE_PRE_DESELECT, select(), ToolSettings::selectmode, SI_STICKY_VERTEX, UI_view2d_region_to_view(), BMUVOffsets::uv, uv_circle_select_is_edge_inside(), uv_circle_select_is_point_inside(), ToolSettings::uv_flag, uv_select_all_perform_multi(), UV_SELECT_EDGE, UV_SELECT_FACE, uv_select_flush_from_tag_face(), UV_SELECT_ISLAND, uv_select_linked_multi(), uv_select_tag_update_for_object(), ToolSettings::uv_selectmode, ToolSettings::uv_sticky, UV_SYNC_SELECTION, uvedit_edge_select_set_with_sticky(), uvedit_face_select_test(), uvedit_face_visible_test(), uvedit_uv_select_set(), uvedit_uv_select_test(), uvedit_vertex_select_tagged(), BMLoop::v, WM_gesture_is_modal_first(), x, and y.
Referenced by UV_OT_select_circle().
|
static |
Definition at line 3715 of file uvedit_select.cc.
References dist_squared_to_line_segment_v2().
Referenced by uv_circle_select_exec().
|
static |
Definition at line 3703 of file uvedit_select.cc.
References len_squared_v2().
Referenced by uv_circle_select_exec().
| bool uv_find_nearest_edge | ( | Scene * | scene, |
| Object * | obedit, | ||
| const float | co[2], | ||
| const float | penalty, | ||
| UvNearestHit * | hit ) |
Definition at line 836 of file uvedit_select.cc.
References BKE_editmesh_from_object(), BLI_assert, BMEditMesh::bm, BM_ELEM_CD_GET_FLOAT_P, BM_FACES_OF_MESH, BM_ITER_ELEM_INDEX, BM_ITER_MESH, BM_LOOPS_OF_FACE, BM_mesh_elem_index_ensure(), BM_uv_map_get_offsets(), BM_VERT, closest_to_line_segment_v2(), l, len_squared_v2(), mul_v2_v2(), BMLoop::next, sqrtf, square_f(), sub_v2_v2(), BMUVOffsets::uv, uvedit_edge_select_test(), and uvedit_face_visible_test().
Referenced by uv_find_nearest_edge_multi().
| bool uv_find_nearest_edge_multi | ( | Scene * | scene, |
| const Span< Object * > | objects, | ||
| const float | co[2], | ||
| const float | penalty, | ||
| UvNearestHit * | hit ) |
Definition at line 888 of file uvedit_select.cc.
References uv_find_nearest_edge().
Referenced by uv_mouse_select_loop_generic_multi(), uv_mouse_select_multi(), and uv_select_linked_internal().
| bool uv_find_nearest_face | ( | Scene * | scene, |
| Object * | obedit, | ||
| const float | co[2], | ||
| UvNearestHit * | hit ) |
Definition at line 946 of file uvedit_select.cc.
References uv_find_nearest_face_ex().
| bool uv_find_nearest_face_ex | ( | Scene * | scene, |
| Object * | obedit, | ||
| const float | co[2], | ||
| UvNearestHit * | hit, | ||
| bool | only_in_face ) |
| only_in_face | when true, only hit faces which co is inside. This gives users a result they might expect, especially when zoomed in. |
Definition at line 903 of file uvedit_select.cc.
References BKE_editmesh_from_object(), BLI_assert, BMEditMesh::bm, BM_face_uv_calc_center_median(), BM_face_uv_point_inside_test(), BM_FACES_OF_MESH, BM_ITER_MESH, CD_PROP_FLOAT2, CustomData_get_offset(), BMesh::ldata, len_squared_v2(), mul_v2_v2(), sub_v2_v2v2(), and uvedit_face_visible_test().
Referenced by uv_find_nearest_face(), and uv_find_nearest_face_multi_ex().
| bool uv_find_nearest_face_multi | ( | Scene * | scene, |
| const Span< Object * > | objects, | ||
| const float | co[2], | ||
| UvNearestHit * | hit ) |
Definition at line 966 of file uvedit_select.cc.
References uv_find_nearest_face_multi_ex().
Referenced by uv_mouse_select_multi().
| bool uv_find_nearest_face_multi_ex | ( | Scene * | scene, |
| const Span< Object * > | objects, | ||
| const float | co[2], | ||
| UvNearestHit * | hit, | ||
| const bool | only_in_face ) |
Definition at line 951 of file uvedit_select.cc.
References uv_find_nearest_face_ex().
Referenced by uv_find_nearest_face_multi(), and uv_mouse_select_multi().
| BMLoop * uv_find_nearest_loop_from_edge | ( | Scene * | scene, |
| Object * | obedit, | ||
| BMEdge * | e, | ||
| const float | co[2] ) |
Definition at line 1163 of file uvedit_select.cc.
References BKE_editmesh_from_object(), BMEditMesh::bm, BM_ELEM_CD_GET_FLOAT_P, BM_ITER_ELEM, BM_LOOPS_OF_EDGE, CD_PROP_FLOAT2, CustomData_get_offset(), dist_squared_to_line_segment_v2(), e, BMLoop::f, FLT_MAX, l, BMesh::ldata, BMLoop::next, and uvedit_face_visible_test().
Referenced by uv_shortest_path_pick_invoke().
| BMLoop * uv_find_nearest_loop_from_vert | ( | Scene * | scene, |
| Object * | obedit, | ||
| BMVert * | v, | ||
| const float | co[2] ) |
Definition at line 1138 of file uvedit_select.cc.
References BKE_editmesh_from_object(), BMEditMesh::bm, BM_ELEM_CD_GET_FLOAT_P, BM_ITER_ELEM, BM_LOOPS_OF_VERT, CD_PROP_FLOAT2, CustomData_get_offset(), BMLoop::f, FLT_MAX, l, BMesh::ldata, len_squared_v2v2(), uvedit_face_visible_test(), and v.
Referenced by uv_shortest_path_pick_invoke().
| bool uv_find_nearest_vert | ( | Scene * | scene, |
| Object * | obedit, | ||
| float const | co[2], | ||
| const float | penalty_dist, | ||
| UvNearestHit * | hit ) |
Definition at line 984 of file uvedit_select.cc.
References BKE_editmesh_from_object(), BLI_assert, BMEditMesh::bm, BM_ELEM_CD_GET_FLOAT_P, BM_FACES_OF_MESH, BM_ITER_ELEM_INDEX, BM_ITER_MESH, BM_LOOPS_OF_FACE, BM_mesh_elem_index_ensure(), BM_uv_map_get_offsets(), BM_VERT, l, len_squared_v2(), mul_v2_v2(), sqrtf, square_f(), sub_v2_v2v2(), BMUVOffsets::uv, uv_nearest_between(), uvedit_face_visible_test(), and uvedit_uv_select_test().
Referenced by uv_find_nearest_vert_multi(), and uv_sculpt_stroke_init().
| bool uv_find_nearest_vert_multi | ( | Scene * | scene, |
| const Span< Object * > | objects, | ||
| float const | co[2], | ||
| const float | penalty_dist, | ||
| UvNearestHit * | hit ) |
Definition at line 1043 of file uvedit_select.cc.
References uv_find_nearest_vert().
Referenced by uv_mouse_select_multi().
|
static |
Definition at line 4995 of file uvedit_select.cc.
References BLI_assert, FaceIsland::faces, FaceIsland::faces_len, FaceIsland::offsets, and uvedit_face_select_test().
Referenced by uv_select_similar_island_exec().
|
static |
Deselects UVs that are not part of a complete island selection.
Use only when sync select disabled.
Definition at line 5394 of file uvedit_select.cc.
References BLI_assert, BMEditMesh::bm, BM_ELEM_CD_SET_BOOL, BM_elem_flag_disable, BM_elem_flag_enable, BM_elem_flag_test, BM_ELEM_TAG, BM_FACES_OF_MESH, BM_ITER_ELEM, BM_ITER_MESH, BM_LOOPS_OF_FACE, BM_uv_element_get(), BM_uv_element_map_create(), BM_uv_element_map_free(), l, MEM_callocN, MEM_freeN(), BMUVOffsets::select_edge, BMUVOffsets::select_vert, UvElementMap::total_islands, UV_SYNC_SELECTION, uvedit_edge_select_test(), and uvedit_face_visible_test().
Referenced by ED_uvedit_selectmode_clean().
|
static |
Definition at line 4106 of file uvedit_select.cc.
References do_lasso_select_mesh_uv(), blender::Array< T, InlineBufferCapacity, Allocator >::is_empty(), OPERATOR_CANCELLED, OPERATOR_FINISHED, OPERATOR_PASS_THROUGH, wmOperator::ptr, RNA_enum_get(), and WM_gesture_lasso_path_to_array().
Referenced by UV_OT_select_lasso().
|
static |
Definition at line 2660 of file uvedit_select.cc.
References BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(), CTX_data_scene(), CTX_data_view_layer(), params, and uv_mouse_select_multi().
Referenced by uv_select_exec().
|
static |
Definition at line 2807 of file uvedit_select.cc.
References BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(), CTX_data_scene(), CTX_data_view_layer(), ret, and uv_mouse_select_loop_generic_multi().
Referenced by uv_select_edge_ring_exec(), and uv_select_loop_exec().
|
static |
Definition at line 2744 of file uvedit_select.cc.
References BKE_editmesh_from_object(), BLI_assert_unreachable, CTX_data_ensure_evaluated_depsgraph(), CTX_data_scene(), CTX_wm_region(), depsgraph, ED_uvedit_select_mode_get(), ED_uvedit_selectmode_flush(), EDBM_deselect_flush(), EDBM_select_flush(), OPERATOR_CANCELLED, OPERATOR_FINISHED, OPERATOR_PASS_THROUGH, SEL_DESELECT, uv_find_nearest_edge_multi(), ToolSettings::uv_flag, UV_LOOP_SELECT, uv_nearest_hit_init_max(), uv_nearest_hit_init_max_default(), UV_RING_SELECT, uv_select_all_perform_multi_ex(), uv_select_edgeloop(), uv_select_edgering(), UV_SELECT_FACE, uv_select_faceloop(), uv_select_tag_update_for_object(), and UV_SYNC_SELECTION.
Referenced by uv_mouse_select_loop_generic().
|
static |
Definition at line 2432 of file uvedit_select.cc.
References BKE_editmesh_from_object(), BLI_assert, BLI_assert_unreachable, bm, BMEditMesh::bm, BM_mesh_active_face_set(), BM_select_history_validate(), BM_uv_map_ensure_edge_select_attr(), BM_uv_map_ensure_vert_select_attr(), BM_uv_map_get_offsets(), CD_PROP_FLOAT2, CTX_data_ensure_evaluated_depsgraph(), CTX_data_scene(), CTX_wm_region(), CustomData_get_active_layer_name(), depsgraph, ED_uvedit_active_edge_loop_set(), ED_uvedit_active_vert_loop_set(), ED_uvedit_selectmode_flush(), EDBM_selectmode_flush(), ELEM, FLT_MAX, BMesh::ldata, params, SCE_SELECT_EDGE, SCE_SELECT_FACE, SEL_DESELECT, SEL_OP_ADD, SEL_OP_AND, SEL_OP_SET, SEL_OP_SUB, SEL_OP_XOR, ToolSettings::selectmode, SI_STICKY_DISABLE, uv_find_nearest_edge_multi(), uv_find_nearest_face_multi(), uv_find_nearest_face_multi_ex(), uv_find_nearest_vert_multi(), ToolSettings::uv_flag, uv_nearest_hit_init_dist_px(), uv_nearest_hit_init_max_default(), uv_select_all_perform_multi(), UV_SELECT_EDGE, UV_SELECT_FACE, UV_SELECT_ISLAND, uv_select_linked_multi(), uv_select_tag_update_for_object(), UV_SELECT_VERTEX, ToolSettings::uv_selectmode, ToolSettings::uv_sticky, UV_SYNC_SELECTION, uvedit_edge_select_set_with_sticky(), uvedit_edge_select_test(), uvedit_face_select_set_with_sticky(), uvedit_face_select_test(), uvedit_uv_select_set_with_sticky(), and uvedit_uv_select_test().
Referenced by uv_mouse_select().
|
static |
Definition at line 974 of file uvedit_select.cc.
References BM_ELEM_CD_GET_FLOAT_P, l, line_point_side_v2(), BMLoop::next, and BMLoop::prev.
Referenced by uv_find_nearest_vert().
| UvNearestHit uv_nearest_hit_init_dist_px | ( | const View2D * | v2d, |
| const float | dist_px ) |
Definition at line 809 of file uvedit_select.cc.
References UvNearestHit::dist_sq, square_f(), UI_view2d_scale_get_x(), and UI_view2d_scale_get_y().
Referenced by uv_mouse_select_multi().
| UvNearestHit uv_nearest_hit_init_max | ( | const View2D * | v2d | ) |
Definition at line 818 of file uvedit_select.cc.
References UvNearestHit::dist_sq, FLT_MAX, UI_view2d_scale_get_x(), and UI_view2d_scale_get_y().
Referenced by stitch_select(), uv_mouse_select_loop_generic_multi(), uv_sculpt_stroke_init(), uv_select_linked_internal(), and uv_shortest_path_pick_invoke().
| UvNearestHit uv_nearest_hit_init_max_default | ( | ) |
Definition at line 827 of file uvedit_select.cc.
References UvNearestHit::dist_sq, and FLT_MAX.
Referenced by uv_mouse_select_loop_generic_multi(), uv_mouse_select_multi(), and uv_select_linked_internal().
| void UV_OT_select | ( | wmOperatorType * | ot | ) |
Definition at line 2700 of file uvedit_select.cc.
References wmOperatorType::description, ED_operator_uvedit(), ED_select_pick_get_name(), wmOperatorType::exec, wmOperatorType::flag, FLT_MAX, wmOperatorType::get_name, wmOperatorType::idname, wmOperatorType::invoke, wmOperatorType::name, OPTYPE_UNDO, ot, wmOperatorType::poll, PROP_SKIP_SAVE, RNA_def_float_vector(), RNA_def_property_flag(), wmOperatorType::srna, uv_select_exec(), uv_select_invoke(), and WM_operator_properties_mouse_select().
Referenced by ED_operatortypes_uvedit().
| void UV_OT_select_all | ( | wmOperatorType * | ot | ) |
Definition at line 2411 of file uvedit_select.cc.
References wmOperatorType::description, ED_operator_uvedit(), wmOperatorType::exec, wmOperatorType::flag, wmOperatorType::idname, wmOperatorType::name, OPTYPE_REGISTER, OPTYPE_UNDO, ot, wmOperatorType::poll, uv_select_all_exec(), and WM_operator_properties_select_all().
Referenced by ED_operatortypes_uvedit().
| void UV_OT_select_box | ( | wmOperatorType * | ot | ) |
Definition at line 3673 of file uvedit_select.cc.
References wmOperatorType::cancel, wmOperatorType::description, ED_operator_uvedit_space_image(), wmOperatorType::exec, wmOperatorType::flag, wmOperatorType::idname, wmOperatorType::invoke, wmOperatorType::modal, wmOperatorType::name, OPTYPE_UNDO, ot, wmOperatorType::poll, RNA_def_boolean(), wmOperatorType::srna, uv_box_select_exec(), WM_gesture_box_cancel(), WM_gesture_box_invoke(), WM_gesture_box_modal(), WM_operator_properties_gesture_box(), and WM_operator_properties_select_operation_simple().
Referenced by ED_operatortypes_uvedit().
| void UV_OT_select_circle | ( | wmOperatorType * | ot | ) |
Definition at line 3885 of file uvedit_select.cc.
References wmOperatorType::cancel, wmOperatorType::description, ED_operator_uvedit_space_image(), ED_select_circle_get_name(), wmOperatorType::exec, wmOperatorType::flag, wmOperatorType::get_name, wmOperatorType::idname, wmOperatorType::invoke, wmOperatorType::modal, wmOperatorType::name, OPTYPE_UNDO, ot, wmOperatorType::poll, uv_circle_select_exec(), WM_gesture_circle_cancel(), WM_gesture_circle_invoke(), WM_gesture_circle_modal(), WM_operator_properties_gesture_circle(), and WM_operator_properties_select_operation_simple().
Referenced by ED_operatortypes_uvedit().
| void UV_OT_select_edge_ring | ( | wmOperatorType * | ot | ) |
Definition at line 2911 of file uvedit_select.cc.
References wmOperatorType::description, ED_operator_uvedit(), wmOperatorType::exec, wmOperatorType::flag, FLT_MAX, wmOperatorType::idname, wmOperatorType::invoke, wmOperatorType::name, OPTYPE_UNDO, ot, wmOperatorType::poll, PROP_SKIP_SAVE, RNA_def_boolean(), RNA_def_float_vector(), RNA_def_property_flag(), wmOperatorType::srna, uv_select_edge_ring_exec(), and uv_select_edge_ring_invoke().
Referenced by ED_operatortypes_uvedit().
| void UV_OT_select_lasso | ( | wmOperatorType * | ot | ) |
Definition at line 4119 of file uvedit_select.cc.
References wmOperatorType::cancel, wmOperatorType::description, ED_operator_uvedit_space_image(), wmOperatorType::exec, wmOperatorType::flag, wmOperatorType::idname, wmOperatorType::invoke, wmOperatorType::modal, wmOperatorType::name, OPTYPE_DEPENDS_ON_CURSOR, OPTYPE_UNDO, ot, wmOperatorType::poll, uv_lasso_select_exec(), WM_gesture_lasso_cancel(), WM_gesture_lasso_invoke(), WM_gesture_lasso_modal(), WM_operator_properties_gesture_lasso(), and WM_operator_properties_select_operation_simple().
Referenced by ED_operatortypes_uvedit().
| void UV_OT_select_less | ( | wmOperatorType * | ot | ) |
Definition at line 2206 of file uvedit_select.cc.
References wmOperatorType::description, ED_operator_uvedit_space_image(), wmOperatorType::exec, wmOperatorType::flag, wmOperatorType::idname, wmOperatorType::name, OPTYPE_REGISTER, OPTYPE_UNDO, ot, wmOperatorType::poll, and uv_select_less_exec().
Referenced by ED_operatortypes_uvedit().
| void UV_OT_select_linked | ( | wmOperatorType * | ot | ) |
Definition at line 3018 of file uvedit_select.cc.
References wmOperatorType::description, ED_operator_uvedit(), wmOperatorType::exec, wmOperatorType::flag, wmOperatorType::idname, wmOperatorType::name, OPTYPE_REGISTER, OPTYPE_UNDO, ot, wmOperatorType::poll, and uv_select_linked_exec().
Referenced by ED_operatortypes_uvedit().
| void UV_OT_select_linked_pick | ( | wmOperatorType * | ot | ) |
Definition at line 3049 of file uvedit_select.cc.
References wmOperatorType::description, ED_operator_uvedit(), wmOperatorType::exec, wmOperatorType::flag, FLT_MAX, wmOperatorType::idname, wmOperatorType::invoke, wmOperatorType::name, OPTYPE_REGISTER, OPTYPE_UNDO, ot, wmOperatorType::poll, PROP_SKIP_SAVE, RNA_def_boolean(), RNA_def_float_vector(), RNA_def_property_flag(), wmOperatorType::srna, uv_select_linked_pick_exec(), and uv_select_linked_pick_invoke().
Referenced by ED_operatortypes_uvedit().
| void UV_OT_select_loop | ( | wmOperatorType * | ot | ) |
Definition at line 2849 of file uvedit_select.cc.
References wmOperatorType::description, ED_operator_uvedit(), wmOperatorType::exec, wmOperatorType::flag, FLT_MAX, wmOperatorType::idname, wmOperatorType::invoke, wmOperatorType::name, OPTYPE_UNDO, ot, wmOperatorType::poll, PROP_SKIP_SAVE, RNA_def_boolean(), RNA_def_float_vector(), RNA_def_property_flag(), wmOperatorType::srna, uv_select_loop_exec(), and uv_select_loop_invoke().
Referenced by ED_operatortypes_uvedit().
| void UV_OT_select_mode | ( | wmOperatorType * | ot | ) |
Definition at line 5576 of file uvedit_select.cc.
References wmOperatorType::description, ED_operator_uvedit_space_image(), wmOperatorType::exec, wmOperatorType::flag, wmOperatorType::idname, wmOperatorType::invoke, wmOperatorType::name, OPTYPE_REGISTER, OPTYPE_UNDO, ot, wmOperatorType::poll, wmOperatorType::prop, PROP_HIDDEN, PROP_SKIP_SAVE, RNA_def_enum(), RNA_def_property_flag(), rna_enum_mesh_select_mode_uv_items, wmOperatorType::srna, uv_select_mode_exec(), and uv_select_mode_invoke().
Referenced by ED_operatortypes_uvedit().
| void UV_OT_select_more | ( | wmOperatorType * | ot | ) |
Definition at line 2188 of file uvedit_select.cc.
References wmOperatorType::description, ED_operator_uvedit_space_image(), wmOperatorType::exec, wmOperatorType::flag, wmOperatorType::idname, wmOperatorType::name, OPTYPE_REGISTER, OPTYPE_UNDO, ot, wmOperatorType::poll, and uv_select_more_exec().
Referenced by ED_operatortypes_uvedit().
| void UV_OT_select_overlap | ( | wmOperatorType * | ot | ) |
Definition at line 4489 of file uvedit_select.cc.
References wmOperatorType::description, ED_operator_uvedit(), wmOperatorType::exec, wmOperatorType::flag, wmOperatorType::idname, wmOperatorType::name, OPTYPE_REGISTER, OPTYPE_UNDO, ot, wmOperatorType::poll, RNA_def_boolean(), wmOperatorType::srna, and uv_select_overlap_exec().
Referenced by ED_operatortypes_uvedit().
| void UV_OT_select_pinned | ( | wmOperatorType * | ot | ) |
Definition at line 4203 of file uvedit_select.cc.
References wmOperatorType::description, ED_operator_uvedit(), wmOperatorType::exec, wmOperatorType::flag, wmOperatorType::idname, wmOperatorType::name, OPTYPE_REGISTER, OPTYPE_UNDO, ot, wmOperatorType::poll, and uv_select_pinned_exec().
Referenced by ED_operatortypes_uvedit().
| void UV_OT_select_similar | ( | wmOperatorType * | ot | ) |
Definition at line 5205 of file uvedit_select.cc.
References BLT_I18NCONTEXT_ID_MESH, wmOperatorType::description, ED_operator_uvedit_space_image(), wmOperatorType::exec, wmOperatorType::flag, wmOperatorType::idname, wmOperatorType::invoke, wmOperatorType::name, OPTYPE_REGISTER, OPTYPE_UNDO, ot, wmOperatorType::poll, wmOperatorType::prop, prop_similar_compare_types, RNA_def_enum(), RNA_def_enum_funcs(), RNA_def_float(), RNA_def_property_translation_context(), SIM_CMP_EQ, SIMVERT_NORMAL, wmOperatorType::srna, uv_select_similar_exec(), uv_select_similar_type_itemf(), uv_select_similar_type_items, and WM_menu_invoke().
Referenced by ED_operatortypes_uvedit().
| void UV_OT_select_split | ( | wmOperatorType * | ot | ) |
Definition at line 3183 of file uvedit_select.cc.
References wmOperatorType::description, ED_operator_uvedit(), wmOperatorType::exec, wmOperatorType::flag, wmOperatorType::idname, wmOperatorType::name, OPTYPE_REGISTER, OPTYPE_UNDO, ot, wmOperatorType::poll, and uv_select_split_exec().
Referenced by ED_operatortypes_uvedit().
|
static |
Definition at line 2264 of file uvedit_select.cc.
References BMEditMesh::bm, BM_ELEM_CD_SET_BOOL, BM_FACES_OF_MESH, BM_ITER_ELEM, BM_ITER_MESH, BM_LOOPS_OF_FACE, BM_uv_map_ensure_edge_select_attr(), BM_uv_map_ensure_vert_select_attr(), BM_uv_map_get_offsets(), CD_PROP_FLOAT2, CustomData_get_active_layer_name(), l, BMesh::ldata, BMUVOffsets::select_edge, BMUVOffsets::select_vert, and uvedit_face_visible_test().
Referenced by uv_select_all_perform().
|
static |
Definition at line 2390 of file uvedit_select.cc.
References BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(), CTX_data_ensure_evaluated_depsgraph(), CTX_data_scene(), CTX_data_view_layer(), depsgraph, OPERATOR_FINISHED, wmOperator::ptr, RNA_enum_get(), uv_select_all_perform_multi(), and uv_select_tag_update_for_object().
Referenced by UV_OT_select_all().
Definition at line 2327 of file uvedit_select.cc.
References BKE_editmesh_from_object(), BM_ELEM_SELECT, EDBM_flag_disable_all(), EDBM_flag_enable_all(), EDBM_select_swap(), EDBM_select_toggle_all(), EDBM_selectmode_flush(), SEL_DESELECT, SEL_INVERT, SEL_SELECT, SEL_TOGGLE, ToolSettings::uv_flag, uv_select_all(), uv_select_invert(), UV_SYNC_SELECTION, and uvedit_select_is_any_selected().
Referenced by uv_select_all_perform_multi_ex(), uv_select_edgeloop(), uv_select_edgering(), uv_select_faceloop(), and uv_select_overlap().
|
static |
Definition at line 2385 of file uvedit_select.cc.
References uv_select_all_perform_multi_ex().
Referenced by do_lasso_select_mesh_uv(), uv_box_select_exec(), uv_circle_select_exec(), uv_mouse_select_multi(), uv_select_all_exec(), and uv_select_linked_internal().
|
static |
Definition at line 2368 of file uvedit_select.cc.
References SEL_DESELECT, SEL_SELECT, SEL_TOGGLE, uv_select_all_perform(), and uvedit_select_is_any_selected_multi().
|
static |
Referenced by uv_mouse_select_loop_generic_multi(), and uv_select_all_perform_multi().
|
static |
Definition at line 2890 of file uvedit_select.cc.
References wmOperator::ptr, RNA_boolean_get(), RNA_float_get_array(), uv_mouse_select_loop_generic(), and UV_RING_SELECT.
Referenced by UV_OT_select_edge_ring(), and uv_select_edge_ring_invoke().
|
static |
Definition at line 2898 of file uvedit_select.cc.
References CTX_wm_region(), wmEvent::mval, wmOperator::ptr, RNA_float_set_array(), UI_view2d_region_to_view(), uv_select_edge_ring_exec(), and WM_operator_flag_only_pass_through_on_press().
Referenced by UV_OT_select_edge_ring().
|
static |
Definition at line 1540 of file uvedit_select.cc.
References BKE_editmesh_from_object(), BMEditMesh::bm, BM_elem_flag_test, BM_ELEM_TAG, BM_FACES_OF_MESH, BM_ITER_ELEM, BM_ITER_MESH, BM_LOOPS_OF_FACE, BM_uv_map_ensure_edge_select_attr(), BM_uv_map_ensure_vert_select_attr(), BM_uv_map_get_offsets(), CD_PROP_FLOAT2, CustomData_get_active_layer_name(), BMesh::ldata, BMLoop::next, SEL_DESELECT, select(), UV_EDGE_LOOP_BOUNDARY_ALL, UV_EDGE_LOOP_BOUNDARY_LOOP, uv_select_all_perform(), uv_select_edgeloop_double_side_tag(), uv_select_edgeloop_single_side_tag(), UV_SELECT_VERTEX, ToolSettings::uv_selectmode, uvedit_edge_select_set_with_sticky(), uvedit_edge_select_test(), uvedit_loop_find_other_radial_loop_with_visible_face(), and uvedit_uv_select_set_with_sticky().
Referenced by uv_mouse_select_loop_generic_multi().
|
static |
Tag all loops which should be selected, the caller must select.
Definition at line 1431 of file uvedit_select.cc.
References ARRAY_SIZE, BLI_assert, BMEditMesh::bm, BM_edge_other_vert(), BM_elem_flag_disable, BM_elem_flag_enable, BM_elem_flag_test, BM_ELEM_TAG, bm_loop_tags_clear(), bm_select_edgeloop_double_side_next(), BMLoop::e, e, uvedit_face_visible_test(), uvedit_loop_find_other_radial_loop_with_visible_face(), BMEdge::v1, and BMEdge::v2.
Referenced by uv_select_edgeloop().
|
static |
Tag all loops which should be selected, the caller must select.
| r_count_by_select | Count the number of unselected and selected loops, this is needed to implement cycling between eUVEdgeLoopBoundaryMode. |
Definition at line 1482 of file uvedit_select.cc.
References BMEditMesh::bm, BM_edge_other_vert(), BM_elem_flag_disable, BM_elem_flag_enable, BM_elem_flag_test, BM_ELEM_TAG, bm_loop_tags_clear(), bm_select_edgeloop_single_side_next(), BMLoop::e, BMLoop::f, UV_EDGE_LOOP_BOUNDARY_LOOP, uvedit_edge_select_test(), uvedit_face_visible_test(), uvedit_loop_find_other_radial_loop_with_visible_face(), BMEdge::v1, and BMEdge::v2.
Referenced by uv_select_edgeloop().
|
static |
Definition at line 1692 of file uvedit_select.cc.
References BKE_editmesh_from_object(), BMEditMesh::bm, BM_EDGE, BM_elem_flag_disable, BM_elem_flag_enable, BM_elem_flag_test, BM_ELEM_TAG, BM_mesh_elem_hflag_disable_all(), BM_uv_map_ensure_edge_select_attr(), BM_uv_map_ensure_vert_select_attr(), BM_uv_map_get_offsets(), CD_PROP_FLOAT2, CustomData_get_active_layer_name(), BMLoop::e, BMLoop::f, BMesh::ldata, BMFace::len, BMLoop::next, SCE_SELECT_FACE, SCE_SELECT_VERTEX, SEL_DESELECT, select(), ToolSettings::selectmode, ToolSettings::uv_flag, uv_select_all_perform(), UV_SELECT_FACE, UV_SELECT_VERTEX, ToolSettings::uv_selectmode, UV_SYNC_SELECTION, uvedit_edge_select_set_with_sticky(), uvedit_edge_select_test(), uvedit_face_select_set_with_sticky(), uvedit_face_visible_test(), uvedit_loop_find_other_radial_loop_with_visible_face(), and uvedit_uv_select_set_with_sticky().
Referenced by uv_mouse_select_loop_generic_multi().
|
static |
Definition at line 2670 of file uvedit_select.cc.
References ED_select_pick_params_from_operator(), OPERATOR_CANCELLED, OPERATOR_FINISHED, OPERATOR_PASS_THROUGH, params, wmOperator::ptr, RNA_float_get_array(), and uv_mouse_select().
Referenced by UV_OT_select(), and uv_select_invoke().
|
static |
Definition at line 1627 of file uvedit_select.cc.
References BKE_editmesh_from_object(), BMEditMesh::bm, BM_elem_flag_enable, BM_elem_flag_test, BM_ELEM_TAG, BM_FACE, BM_mesh_elem_hflag_disable_all(), BM_uv_map_ensure_edge_select_attr(), BM_uv_map_ensure_vert_select_attr(), BM_uv_map_get_offsets(), CD_PROP_FLOAT2, CustomData_get_active_layer_name(), BMLoop::f, BMesh::ldata, BMFace::len, BMLoop::next, SEL_DESELECT, select(), uv_select_all_perform(), uvedit_face_select_set_with_sticky(), uvedit_face_select_test(), uvedit_face_visible_test(), and uvedit_loop_find_other_radial_loop_with_visible_face().
Referenced by uv_mouse_select_loop_generic_multi().
|
static |
Flush the selection from UV edges based on sticky modes.
Useful when performing edge selections in different sticky modes, since setting the required edge selection is done manually or using uvedit_edge_select_set_noflush, but dealing with sticky modes for vertex selections is best done in a separate function.
Definition at line 3431 of file uvedit_select.cc.
References BMEditMesh::bm, bm_clear_uv_vert_selection(), BM_ELEM_CD_GET_BOOL, BM_ELEM_CD_SET_BOOL, BM_FACE, BM_FACES_OF_MESH, BM_ITER_ELEM, BM_ITER_MESH, BM_ITER_MESH_INDEX, BM_LOOPS_OF_FACE, BM_mesh_elem_table_ensure(), BM_uv_map_ensure_edge_select_attr(), BM_uv_map_ensure_vert_select_attr(), BM_uv_map_get_offsets(), BM_uv_vert_map_create(), BM_uv_vert_map_free(), CD_PROP_FLOAT2, CustomData_get_active_layer_name(), ELEM, l, BMesh::ldata, BMLoop::next, BMLoop::prev, BMUVOffsets::select_edge, BMUVOffsets::select_vert, SI_STICKY_LOC, SI_STICKY_VERTEX, ToolSettings::uv_flag, uv_select_flush_from_tag_sticky_loc_internal(), ToolSettings::uv_sticky, UV_SYNC_SELECTION, and uvedit_face_visible_test().
Referenced by ED_uvedit_selectmode_clean(), and uv_select_invert().
|
static |
Flush the selection from face tags based on sticky and selection modes.
needed because setting the selection of a face is done in a number of places but it also needs to respect the sticky modes for the UV verts, so dealing with the sticky modes is best done in a separate function.
Definition at line 3281 of file uvedit_select.cc.
References BKE_editmesh_from_object(), BMEditMesh::bm, BM_ELEM_CD_SET_BOOL, BM_elem_flag_test, BM_ELEM_TAG, BM_FACE, BM_FACES_OF_MESH, BM_ITER_ELEM, BM_ITER_MESH, BM_ITER_MESH_INDEX, BM_LOOPS_OF_FACE, BM_mesh_elem_table_ensure(), BM_uv_map_ensure_edge_select_attr(), BM_uv_map_ensure_vert_select_attr(), BM_uv_map_get_offsets(), BM_uv_vert_map_create(), BM_uv_vert_map_free(), CD_PROP_FLOAT2, CustomData_get_active_layer_name(), ELEM, l, BMesh::ldata, select(), BMUVOffsets::select_edge, SI_STICKY_LOC, SI_STICKY_VERTEX, ToolSettings::uv_flag, uv_select_flush_from_tag_sticky_loc_internal(), ToolSettings::uv_sticky, UV_SYNC_SELECTION, uvedit_face_select_set(), and uvedit_vert_is_face_select_any_other().
Referenced by do_lasso_select_mesh_uv(), ED_uvedit_selectmode_clean(), uv_box_select_exec(), uv_circle_select_exec(), and uv_select_more_less().
|
static |
Flush the selection from loop tags based on sticky and selection modes.
needed because setting the selection of a face is done in a number of places but it also needs to respect the sticky modes for the UV verts, so dealing with the sticky modes is best done in a separate function.
Definition at line 3350 of file uvedit_select.cc.
References BKE_editmesh_from_object(), BMEditMesh::bm, BM_elem_flag_enable, BM_elem_flag_test, BM_ELEM_TAG, BM_FACE, BM_FACES_OF_MESH, BM_ITER_ELEM, BM_ITER_MESH, BM_ITER_MESH_INDEX, BM_LOOPS_OF_FACE, BM_mesh_elem_hflag_disable_all(), BM_mesh_elem_table_ensure(), BM_uv_map_ensure_edge_select_attr(), BM_uv_map_ensure_vert_select_attr(), BM_uv_map_get_offsets(), BM_uv_vert_map_create(), BM_uv_vert_map_free(), BM_VERT, CD_PROP_FLOAT2, CustomData_get_active_layer_name(), l, BMesh::ldata, select(), SI_STICKY_LOC, SI_STICKY_VERTEX, ToolSettings::uv_flag, uv_select_flush_from_tag_sticky_loc_internal(), ToolSettings::uv_sticky, UV_SYNC_SELECTION, uvedit_uv_select_set(), and BMLoop::v.
Referenced by ED_uvedit_selectmode_clean(), and uv_select_more_less().
|
static |
helper function for uv_select_flush_from_tag_loop and uv_select_flush_from_tag_face
Definition at line 3224 of file uvedit_select.cc.
References BMEditMesh::bm, BM_elem_index_get, BM_face_at_index(), BM_iter_at_index(), BM_LOOPS_OF_FACE, BM_uv_vert_map_at_index(), l, UvMapVert::next, select(), UvMapVert::separate, uvedit_uv_select_set(), and BMLoop::v.
Referenced by uv_select_flush_from_loop_edge_flag(), uv_select_flush_from_tag_face(), and uv_select_flush_from_tag_loop().
|
static |
Definition at line 2285 of file uvedit_select.cc.
References BLI_assert, BMEditMesh::bm, BM_ELEM_CD_GET_BOOL, BM_ELEM_CD_SET_BOOL, BM_FACES_OF_MESH, BM_ITER_ELEM, BM_ITER_MESH, BM_LOOPS_OF_FACE, BM_uv_map_ensure_edge_select_attr(), BM_uv_map_ensure_vert_select_attr(), BM_uv_map_get_offsets(), CD_PROP_FLOAT2, CustomData_get_active_layer_name(), ELEM, l, BMesh::ldata, BMUVOffsets::select_edge, BMUVOffsets::select_vert, ToolSettings::uv_flag, UV_SELECT_EDGE, UV_SELECT_FACE, uv_select_flush_from_loop_edge_flag(), UV_SELECT_ISLAND, UV_SELECT_VERTEX, ToolSettings::uv_selectmode, UV_SYNC_SELECTION, uvedit_face_visible_test(), and uvedit_select_flush().
Referenced by uv_select_all_perform().
|
static |
Definition at line 2687 of file uvedit_select.cc.
References CTX_wm_region(), wmEvent::mval, wmOperator::ptr, RNA_float_set_array(), UI_view2d_region_to_view(), uv_select_exec(), and WM_operator_flag_only_pass_through_on_press().
Referenced by UV_OT_select().
|
static |
Definition at line 2201 of file uvedit_select.cc.
References uv_select_more_less().
Referenced by UV_OT_select_less().
|
static |
Definition at line 3013 of file uvedit_select.cc.
References uv_select_linked_internal().
Referenced by UV_OT_select_linked().
|
static |
Definition at line 2952 of file uvedit_select.cc.
References BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(), CTX_data_scene(), CTX_data_view_layer(), CTX_wm_region(), DEG_id_tag_update(), ID_RECALC_SELECT, ID_RECALC_SYNC_TO_EVAL, wmEvent::mval, NC_GEOM, ND_SELECT, OPERATOR_CANCELLED, OPERATOR_FINISHED, wmOperator::ptr, RNA_boolean_get(), RNA_float_get_array(), RNA_float_set_array(), SCE_SELECT_FACE, SEL_DESELECT, ToolSettings::selectmode, UI_view2d_region_to_view(), uv_find_nearest_edge_multi(), ToolSettings::uv_flag, uv_nearest_hit_init_max(), uv_nearest_hit_init_max_default(), uv_select_all_perform_multi(), uv_select_linked_multi(), UV_SYNC_SELECTION, and WM_event_add_notifier().
Referenced by uv_select_linked_exec(), uv_select_linked_pick_exec(), and uv_select_linked_pick_invoke().
|
static |
Definition at line 1791 of file uvedit_select.cc.
References BKE_editmesh_from_object(), BLI_assert, BMEditMesh::bm, BM_elem_flag_test, BM_ELEM_HIDDEN, BM_elem_index_get, BM_ELEM_SELECT, BM_FACE, BM_face_at_index(), BM_FACES_OF_MESH, BM_ITER_ELEM, BM_ITER_ELEM_INDEX, BM_ITER_MESH_INDEX, BM_loop_uv_share_vert_check(), BM_LOOPS_OF_FACE, BM_LOOPS_OF_VERT, BM_mesh_elem_table_ensure(), BM_uv_map_ensure_edge_select_attr(), BM_uv_map_ensure_vert_select_attr(), BM_uv_map_get_offsets(), BM_uv_vert_map_at_index(), BM_uv_vert_map_create(), BM_uv_vert_map_free(), CD_PROP_FLOAT2, CustomData_get_active_layer_name(), EDBM_deselect_flush(), EDBM_selectmode_flush(), BMLoop::f, UvMapVert::face_index, flag, l, BMesh::ldata, MEM_callocN, MEM_freeN(), MEM_mallocN, UvMapVert::next, UvMapVert::separate, SET_SELECTION, BMesh::totface, BMUVOffsets::uv, UV_SYNC_SELECTION, uvedit_face_select_test(), uvedit_face_visible_test(), uvedit_uv_select_test(), and BMLoop::v.
Referenced by do_lasso_select_mesh_uv(), uv_box_select_exec(), uv_circle_select_exec(), uv_mouse_select_multi(), and uv_select_linked_internal().
|
static |
Definition at line 3044 of file uvedit_select.cc.
References uv_select_linked_internal().
Referenced by UV_OT_select_linked_pick().
|
static |
Definition at line 3039 of file uvedit_select.cc.
References uv_select_linked_internal().
Referenced by UV_OT_select_linked_pick().
|
static |
Definition at line 2826 of file uvedit_select.cc.
References wmOperator::ptr, RNA_boolean_get(), RNA_float_get_array(), UV_LOOP_SELECT, and uv_mouse_select_loop_generic().
Referenced by UV_OT_select_loop(), and uv_select_loop_invoke().
|
static |
Definition at line 2836 of file uvedit_select.cc.
References CTX_wm_region(), wmEvent::mval, wmOperator::ptr, RNA_float_set_array(), UI_view2d_region_to_view(), uv_select_loop_exec(), and WM_operator_flag_only_pass_through_on_press().
Referenced by UV_OT_select_loop().
|
static |
Definition at line 5535 of file uvedit_select.cc.
References CTX_data_scene(), DEG_id_tag_update(), ED_uvedit_selectmode_clean_multi(), ID_RECALC_SELECT, ID_RECALC_SYNC_TO_EVAL, NC_SCENE, ND_TOOLSETTINGS, OPERATOR_CANCELLED, OPERATOR_FINISHED, wmOperator::ptr, RNA_enum_get(), ToolSettings::uv_selectmode, and WM_main_add_notifier().
Referenced by UV_OT_select_mode(), and uv_select_mode_invoke().
|
static |
Definition at line 5558 of file uvedit_select.cc.
References CTX_data_tool_settings(), CTX_wm_space_image(), SpaceImage::mode, OPERATOR_CANCELLED, OPERATOR_PASS_THROUGH, SI_MODE_UV, ToolSettings::uv_flag, uv_select_mode_exec(), and UV_SYNC_SELECTION.
Referenced by UV_OT_select_mode().
|
static |
Definition at line 2183 of file uvedit_select.cc.
References uv_select_more_less().
Referenced by UV_OT_select_more().
Definition at line 2042 of file uvedit_select.cc.
References BKE_editmesh_from_object(), BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(), BMEditMesh::bm, BM_ELEM_CD_GET_BOOL, BM_elem_flag_disable, BM_elem_flag_enable, BM_ELEM_TAG, BM_FACE, BM_FACES_OF_MESH, BM_ITER_ELEM, BM_ITER_MESH, BM_LOOPS_OF_FACE, BM_mesh_elem_hflag_disable_all(), BM_uv_map_ensure_edge_select_attr(), BM_uv_map_ensure_vert_select_attr(), BM_uv_map_get_offsets(), CD_PROP_FLOAT2, CTX_data_scene(), CTX_data_view_layer(), CURR_FACE_IS_UNSEL, CustomData_get_active_layer_name(), DEG_id_tag_update(), EDBM_select_less(), EDBM_select_more(), ID_RECALC_SELECT, l, BMesh::ldata, NC_GEOM, ND_SELECT, NEIGHBORING_FACE_IS_SEL, BMLoop::next, OPERATOR_FINISHED, BMLoop::prev, select(), BMUVOffsets::select_edge, BMUVOffsets::select_vert, ToolSettings::uv_flag, UV_SELECT_FACE, uv_select_flush_from_tag_face(), uv_select_flush_from_tag_loop(), ToolSettings::uv_selectmode, UV_SYNC_SELECTION, uvedit_deselect_flush(), uvedit_face_select_test(), uvedit_face_visible_test(), uvedit_select_flush(), uvedit_vert_is_all_other_faces_selected(), and WM_event_add_notifier().
Referenced by uv_select_less_exec(), and uv_select_more_exec().
Definition at line 4295 of file uvedit_select.cc.
References BKE_editmesh_from_object(), BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(), BLI_assert, BLI_bvhtree_balance(), BLI_bvhtree_free(), BLI_bvhtree_insert(), BLI_bvhtree_new(), BLI_bvhtree_overlap_self(), BLI_gset_add(), BLI_gset_free(), BLI_gset_new_ex(), BLI_heap_clear(), BLI_heap_free(), BLI_heap_new_ex(), BLI_memarena_clear(), BLI_memarena_free(), BLI_memarena_new(), BLI_MEMARENA_STD_BUFSIZE, BLI_POLYFILL_ALLOC_NGON_RESERVE, BLI_polyfill_beautify(), BLI_polyfill_calc_arena(), BMEditMesh::bm, BM_ELEM_CD_GET_FLOAT_P, BM_ELEM_TAG, BM_FACE, BM_FACES_OF_MESH, BM_ITER_ELEM_INDEX, BM_ITER_MESH, BM_ITER_MESH_INDEX, BM_LOOPS_OF_FACE, BM_mesh_elem_hflag_disable_all(), BM_mesh_elem_index_ensure(), BM_mesh_elem_table_ensure(), BM_uv_map_ensure_edge_select_attr(), BM_uv_map_ensure_vert_select_attr(), BM_uv_map_get_offsets(), BM_VERT, CD_PROP_FLOAT2, copy_v2_v2(), CTX_data_ensure_evaluated_depsgraph(), CTX_data_scene(), CTX_data_view_layer(), CustomData_get_active_layer_name(), CustomData_get_offset(), depsgraph, UVOverlapData::face_index, float, BMesh::ftable, BVHTreeOverlap::indexA, l, BMesh::ldata, BMFace::len, MEM_freeN(), MEM_mallocN, UVOverlapData::ob_index, OPERATOR_FINISHED, overlap_cmp(), overlap_hash(), overlap_tri_tri_uv_test(), SEL_DESELECT, UVOverlapData::tri, UNPACK2, uv_select_all_perform(), uv_select_tag_update_for_object(), uvedit_face_select_enable(), uvedit_face_select_test(), and uvedit_face_visible_test_ex().
Referenced by uv_select_overlap_exec().
|
static |
Definition at line 4483 of file uvedit_select.cc.
References wmOperator::ptr, RNA_boolean_get(), and uv_select_overlap().
Referenced by UV_OT_select_overlap().
|
static |
Definition at line 4145 of file uvedit_select.cc.
References BKE_editmesh_from_object(), BKE_report(), BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(), BMEditMesh::bm, BM_ELEM_CD_GET_BOOL, BM_FACES_OF_MESH, BM_ITER_ELEM, BM_ITER_MESH, BM_LOOPS_OF_FACE, BM_uv_map_ensure_edge_select_attr(), BM_uv_map_ensure_pin_attr(), BM_uv_map_ensure_vert_select_attr(), BM_uv_map_get_offsets(), CD_PROP_FLOAT2, CTX_data_ensure_evaluated_depsgraph(), CTX_data_scene(), CTX_data_view_layer(), CustomData_get_active_layer_name(), depsgraph, ED_uvedit_selectmode_flush(), l, BMesh::ldata, OPERATOR_CANCELLED, OPERATOR_FINISHED, BMUVOffsets::pin, wmOperator::reports, RPT_ERROR, ToolSettings::uv_flag, uv_select_tag_update_for_object(), UV_SELECT_VERTEX, ToolSettings::uv_selectmode, UV_SYNC_SELECTION, uvedit_face_visible_test(), and uvedit_uv_select_enable().
Referenced by UV_OT_select_pinned().
|
static |
Definition at line 4791 of file uvedit_select.cc.
References BKE_editmesh_from_object(), BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(), bm, BMEditMesh::bm, BM_FACES_OF_MESH, BM_ITER_ELEM, BM_ITER_MESH, BM_LOOPS_OF_FACE, BM_uv_map_get_offsets(), copy_m3_m4(), CTX_data_ensure_evaluated_depsgraph(), CTX_data_scene(), CTX_data_tool_settings(), CTX_data_view_layer(), depsgraph, BMLoop::e, ED_select_similar_compare_float_tree(), get_uv_edge_needle(), l, BMLoop::next, OPERATOR_FINISHED, wmOperator::ptr, RNA_enum_get(), RNA_float_get(), select(), BMesh::totvertsel, uv_select_tag_update_for_object(), uvedit_edge_select_set(), uvedit_edge_select_test(), and uvedit_face_visible_test().
Referenced by uv_select_similar_exec().
|
static |
Definition at line 5119 of file uvedit_select.cc.
References CTX_data_tool_settings(), wmOperator::ptr, RNA_property_float_get(), RNA_property_float_set(), RNA_property_is_set(), RNA_struct_find_property(), ToolSettings::select_thresh, ToolSettings::selectmode, ToolSettings::uv_flag, UV_SELECT_EDGE, UV_SELECT_FACE, UV_SELECT_ISLAND, uv_select_similar_edge_exec(), uv_select_similar_face_exec(), uv_select_similar_island_exec(), uv_select_similar_vert_exec(), ToolSettings::uv_selectmode, and UV_SYNC_SELECTION.
Referenced by UV_OT_select_similar().
|
static |
Definition at line 4901 of file uvedit_select.cc.
References BKE_editmesh_from_object(), BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(), bm, BMEditMesh::bm, BM_FACES_OF_MESH, BM_ITER_MESH, BM_uv_map_get_offsets(), copy_m3_m4(), CTX_data_ensure_evaluated_depsgraph(), CTX_data_scene(), CTX_data_tool_settings(), CTX_data_view_layer(), depsgraph, do_history(), ED_select_similar_compare_float_tree(), get_uv_face_needle(), OPERATOR_FINISHED, wmOperator::ptr, RNA_enum_get(), RNA_float_get(), select(), BMesh::totfacesel, uv_select_tag_update_for_object(), uvedit_face_select_set(), uvedit_face_select_test(), and uvedit_face_visible_test().
Referenced by uv_select_similar_exec().
|
static |
Definition at line 5001 of file uvedit_select.cc.
References BKE_editmesh_from_object(), BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(), BLI_assert, BMEditMesh::bm, bm_mesh_calc_uv_islands(), BM_uv_map_get_offsets(), CD_PROP_FLOAT2, copy_m3_m4(), CTX_data_ensure_evaluated_depsgraph(), CTX_data_scene(), CTX_data_tool_settings(), CTX_data_view_layer(), CustomData_get_offset(), depsgraph, do_history(), ED_select_similar_compare_float_tree(), get_uv_island_needle(), BMesh::ldata, LISTBASE_FOREACH_INDEX, MEM_callocN, MEM_SAFE_FREE, OPERATOR_FINISHED, wmOperator::ptr, RNA_enum_get(), RNA_float_get(), select(), BMUVOffsets::uv, uv_island_selected(), uv_select_tag_update_for_object(), UV_SYNC_SELECTION, and uvedit_face_select_set().
Referenced by uv_select_similar_exec().
|
static |
Definition at line 5163 of file uvedit_select.cc.
References CTX_data_tool_settings(), RNA_enum_item_end(), RNA_enum_items_add_value(), ToolSettings::selectmode, ToolSettings::uv_flag, UV_SELECT_EDGE, UV_SELECT_FACE, UV_SELECT_ISLAND, uv_select_similar_type_items, UV_SELECT_VERTEX, ToolSettings::uv_selectmode, UV_SSIM_AREA_3D, UV_SSIM_AREA_UV, UV_SSIM_FACE, UV_SSIM_LENGTH_3D, UV_SSIM_LENGTH_UV, UV_SSIM_MATERIAL, UV_SSIM_OBJECT, UV_SSIM_PIN, UV_SSIM_SIDES, UV_SSIM_WINDING, and UV_SYNC_SELECTION.
Referenced by UV_OT_select_similar().
|
static |
Definition at line 4684 of file uvedit_select.cc.
References BKE_editmesh_from_object(), BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(), bm, BMEditMesh::bm, BM_FACES_OF_MESH, BM_ITER_ELEM, BM_ITER_MESH, BM_LOOPS_OF_FACE, BM_uv_map_get_offsets(), copy_m3_m4(), CTX_data_ensure_evaluated_depsgraph(), CTX_data_scene(), CTX_data_tool_settings(), CTX_data_view_layer(), depsgraph, ED_select_similar_compare_float_tree(), get_uv_vert_needle(), l, OPERATOR_FINISHED, wmOperator::ptr, RNA_enum_get(), RNA_float_get(), select(), BMesh::totvertsel, uv_select_tag_update_for_object(), uvedit_face_visible_test(), uvedit_uv_select_set(), uvedit_uv_select_test(), and BMLoop::v.
Referenced by uv_select_similar_exec().
|
static |
NOTE(@ideasman42): This is based on similar use case to MESH_OT_split(), which has a similar effect but in this case they are not joined to begin with (only having the behavior of being joined) so its best to call this #uv_select_split() instead of just split(), but assigned to the same key as MESH_OT_split.
Definition at line 3104 of file uvedit_select.cc.
References BKE_editmesh_from_object(), BKE_report(), BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(), bm, BMEditMesh::bm, BM_ELEM_CD_GET_BOOL, BM_ELEM_CD_SET_BOOL, BM_FACES_OF_MESH, BM_ITER_ELEM, BM_ITER_MESH, BM_LOOPS_OF_FACE, BM_uv_map_ensure_edge_select_attr(), BM_uv_map_ensure_vert_select_attr(), BM_uv_map_get_offsets(), CD_PROP_FLOAT2, CTX_data_ensure_evaluated_depsgraph(), CTX_data_scene(), CTX_data_view_layer(), CustomData_get_active_layer_name(), depsgraph, l, BMesh::ldata, NC_SPACE, ND_SPACE_IMAGE, OPERATOR_CANCELLED, OPERATOR_FINISHED, wmOperator::reports, RPT_ERROR, BMUVOffsets::select_edge, BMUVOffsets::select_vert, ToolSettings::uv_flag, uv_select_tag_update_for_object(), UV_SYNC_SELECTION, uvedit_face_visible_test(), and WM_event_add_notifier().
Referenced by UV_OT_select_split().
|
static |
Definition at line 3196 of file uvedit_select.cc.
References BKE_mesh_batch_cache_dirty_tag(), BKE_MESH_BATCH_DIRTY_UVEDIT_SELECT, Object::data, DEG_get_evaluated_object(), DEG_id_tag_update(), depsgraph, ID_RECALC_SELECT, NC_GEOM, ND_SELECT, ToolSettings::uv_flag, UV_SYNC_SELECTION, and WM_main_add_notifier().
Referenced by do_lasso_select_mesh_uv(), ED_uvedit_selectmode_clean_multi(), uv_box_select_exec(), uv_circle_select_exec(), uv_mouse_select_loop_generic_multi(), uv_mouse_select_multi(), uv_select_all_exec(), uv_select_overlap(), uv_select_pinned_exec(), uv_select_similar_edge_exec(), uv_select_similar_face_exec(), uv_select_similar_island_exec(), uv_select_similar_vert_exec(), and uv_select_split_exec().
| void uvedit_deselect_flush | ( | const Scene * | scene, |
| BMEditMesh * | em ) |
Mode independent UV de-selection flush.
Definition at line 1345 of file uvedit_select.cc.
References BLI_assert, BMEditMesh::bm, BM_ELEM_CD_GET_BOOL, BM_ELEM_CD_SET_BOOL, BM_FACES_OF_MESH, BM_ITER_ELEM, BM_ITER_MESH, BM_LOOPS_OF_FACE, BM_uv_map_ensure_edge_select_attr(), BM_uv_map_ensure_vert_select_attr(), BM_uv_map_get_offsets(), CD_PROP_FLOAT2, CustomData_get_active_layer_name(), l, BMesh::ldata, BMLoop::next, BMUVOffsets::select_edge, BMUVOffsets::select_vert, UNUSED_VARS_NDEBUG, ToolSettings::uv_flag, UV_SYNC_SELECTION, and uvedit_face_visible_test().
Referenced by uv_rip_object(), and uv_select_more_less().
| void uvedit_edge_select_disable | ( | const Scene * | scene, |
| BMesh * | bm, | ||
| BMLoop * | l, | ||
| const BMUVOffsets | offsets ) |
Definition at line 549 of file uvedit_select.cc.
References BLI_assert, bm, BM_edge_select_set(), BM_ELEM_CD_GET_BOOL, BM_ELEM_CD_SET_BOOL, BM_face_select_set(), BM_vert_select_set(), BMLoop::e, BMLoop::f, l, BMLoop::next, BMLoop::prev, SCE_SELECT_EDGE, SCE_SELECT_FACE, BMUVOffsets::select_edge, BMUVOffsets::select_vert, ToolSettings::selectmode, ToolSettings::uv_flag, UV_SELECT_VERTEX, ToolSettings::uv_selectmode, UV_SYNC_SELECTION, BMEdge::v1, and BMEdge::v2.
Referenced by uvedit_edge_select_set().
| void uvedit_edge_select_enable | ( | const Scene * | scene, |
| BMesh * | bm, | ||
| BMLoop * | l, | ||
| const bool | do_history, | ||
| const BMUVOffsets | offsets ) |
Definition at line 518 of file uvedit_select.cc.
References BLI_assert, bm, BM_edge_select_set(), BM_ELEM_CD_SET_BOOL, BM_face_select_set(), BM_select_history_store, BM_vert_select_set(), do_history(), BMLoop::e, BMLoop::f, l, BMLoop::next, SCE_SELECT_EDGE, SCE_SELECT_FACE, BMUVOffsets::select_edge, BMUVOffsets::select_vert, ToolSettings::selectmode, ToolSettings::uv_flag, UV_SYNC_SELECTION, BMEdge::v1, and BMEdge::v2.
Referenced by uvedit_edge_select_set().
| void uvedit_edge_select_set | ( | const Scene * | scene, |
| BMesh * | bm, | ||
| BMLoop * | l, | ||
| bool | select, | ||
| bool | do_history, | ||
| BMUVOffsets | offsets ) |
Select UV Edge.
Changes selection state of a single UV Edge.
Definition at line 503 of file uvedit_select.cc.
References bm, do_history(), l, select(), uvedit_edge_select_disable(), and uvedit_edge_select_enable().
Referenced by uv_select_similar_edge_exec(), and uvedit_edge_select_set_with_sticky().
| void uvedit_edge_select_set_noflush | ( | const Scene * | scene, |
| BMLoop * | l, | ||
| const bool | select, | ||
| const int | sticky_flag, | ||
| BMUVOffsets | offsets ) |
Sets required UV edge flags as specified by the sticky_flag.
Definition at line 484 of file uvedit_select.cc.
References BLI_assert, BM_ELEM_CD_SET_BOOL, BM_loop_uv_share_edge_check(), BMLoop::f, l, BMLoop::radial_next, select(), BMUVOffsets::select_edge, SI_STICKY_DISABLE, SI_STICKY_VERTEX, BMUVOffsets::uv, and uvedit_face_visible_test().
Referenced by ED_uvedit_selectmode_clean(), and uvedit_edge_select_shared_vert().
| void uvedit_edge_select_set_with_sticky | ( | const Scene * | scene, |
| BMEditMesh * | em, | ||
| BMLoop * | l, | ||
| const bool | select, | ||
| const bool | do_history, | ||
| const BMUVOffsets | offsets ) |
Definition at line 418 of file uvedit_select.cc.
References BMEditMesh::bm, do_history(), BMLoop::f, l, select(), SI_STICKY_DISABLE, SI_STICKY_LOC, SI_STICKY_VERTEX, ToolSettings::uv_flag, ToolSettings::uv_sticky, UV_SYNC_SELECTION, uvedit_edge_select_set(), uvedit_edge_select_shared_vert(), and uvedit_face_visible_test().
Referenced by do_lasso_select_mesh_uv(), edgetag_set_cb(), uv_box_select_exec(), uv_circle_select_exec(), uv_mouse_select_multi(), uv_select_edgeloop(), and uv_select_edgering().
| void uvedit_edge_select_shared_vert | ( | const Scene * | scene, |
| BMEditMesh * | em, | ||
| BMLoop * | l, | ||
| const bool | select, | ||
| const int | sticky_flag, | ||
| const bool | do_history, | ||
| BMUVOffsets | offsets ) |
Selects UV edges and shared vertices according to sticky_flag.
| sticky_flag |
|
Definition at line 451 of file uvedit_select.cc.
References BLI_assert, BM_ELEM_CD_GET_BOOL, do_history(), ELEM, l, BMLoop::next, BMLoop::radial_next, select(), BMUVOffsets::select_edge, SI_STICKY_LOC, SI_STICKY_VERTEX, uvedit_edge_select_set_noflush(), uvedit_uv_select_shared_vert(), and uvedit_vert_is_edge_select_any_other().
Referenced by uvedit_edge_select_set_with_sticky().
| bool uvedit_edge_select_test | ( | const Scene * | scene, |
| BMLoop * | l, | ||
| const BMUVOffsets | offsets ) |
Definition at line 413 of file uvedit_select.cc.
References l, and uvedit_edge_select_test_ex().
Referenced by bm_uv_edge_select_build_islands(), ED_uvedit_selected_edges(), ED_uvedit_selectmode_clean(), edgetag_test_cb(), facetag_test_cb(), stitch_init(), uv_find_nearest_edge(), uv_isolate_selected_islands(), uv_mark_seam_exec(), uv_mouse_select_multi(), uv_seams_from_islands_exec(), uv_select_edgeloop(), uv_select_edgeloop_single_side_tag(), uv_select_edgering(), uv_select_similar_edge_exec(), and uvedit_vert_is_edge_select_any_other().
| bool uvedit_edge_select_test_ex | ( | const ToolSettings * | ts, |
| const BMLoop * | l, | ||
| const BMUVOffsets | offsets ) |
Definition at line 391 of file uvedit_select.cc.
References BLI_assert, BM_ELEM_CD_GET_BOOL, BM_elem_flag_test, BM_ELEM_SELECT, BMLoop::e, BMLoop::f, l, BMLoop::next, SCE_SELECT_EDGE, SCE_SELECT_FACE, BMUVOffsets::select_edge, BMUVOffsets::select_vert, ToolSettings::selectmode, ToolSettings::uv_flag, UV_SELECT_VERTEX, ToolSettings::uv_selectmode, UV_SYNC_SELECTION, and BMLoop::v.
Referenced by blender::draw::mesh_render_data_loop_edge_flag(), transform_mesh_uv_edge_slide_data_create(), and uvedit_edge_select_test().
| void uvedit_face_select_disable | ( | const Scene * | scene, |
| BMesh * | bm, | ||
| BMFace * | efa, | ||
| const BMUVOffsets | offsets ) |
Definition at line 368 of file uvedit_select.cc.
References BLI_assert, bm, BM_ELEM_CD_SET_BOOL, BM_face_select_set(), BM_ITER_ELEM, BM_LOOPS_OF_FACE, l, BMUVOffsets::select_edge, BMUVOffsets::select_vert, ToolSettings::uv_flag, and UV_SYNC_SELECTION.
Referenced by cylinder_project_exec(), smart_project_exec(), uv_cylinder_project(), uv_hide_exec(), uv_sphere_project(), uvedit_face_select_set(), and uvedit_unwrap_cube_project().
| void uvedit_face_select_enable | ( | const Scene * | scene, |
| BMesh * | bm, | ||
| BMFace * | efa, | ||
| const bool | do_history, | ||
| const BMUVOffsets | offsets ) |
Definition at line 344 of file uvedit_select.cc.
References BLI_assert, bm, BM_ELEM_CD_SET_BOOL, BM_face_select_set(), BM_ITER_ELEM, BM_LOOPS_OF_FACE, BM_select_history_store, do_history(), l, BMUVOffsets::select_edge, BMUVOffsets::select_vert, ToolSettings::uv_flag, and UV_SYNC_SELECTION.
Referenced by uv_select_overlap(), and uvedit_face_select_set().
| void uvedit_face_select_set | ( | const Scene * | scene, |
| BMesh * | bm, | ||
| BMFace * | efa, | ||
| bool | select, | ||
| bool | do_history, | ||
| BMUVOffsets | offsets ) |
Select UV Face.
Changes selection state of a single UV Face.
Definition at line 329 of file uvedit_select.cc.
References bm, do_history(), select(), uvedit_face_select_disable(), and uvedit_face_select_enable().
Referenced by ED_uvedit_selectmode_clean(), uv_select_flush_from_tag_face(), uv_select_similar_face_exec(), uv_select_similar_island_exec(), and uvedit_face_select_set_with_sticky().
| void uvedit_face_select_set_with_sticky | ( | const Scene * | scene, |
| BMEditMesh * | em, | ||
| BMFace * | efa, | ||
| const bool | select, | ||
| const bool | do_history, | ||
| const BMUVOffsets | offsets ) |
Definition at line 275 of file uvedit_select.cc.
References BMEditMesh::bm, do_history(), select(), SI_STICKY_DISABLE, ToolSettings::uv_flag, ToolSettings::uv_sticky, UV_SYNC_SELECTION, uvedit_face_select_set(), uvedit_face_select_shared_vert(), and uvedit_face_visible_test().
Referenced by facetag_set_cb(), uv_mouse_select_multi(), uv_select_edgering(), and uv_select_faceloop().
| void uvedit_face_select_shared_vert | ( | const Scene * | scene, |
| BMEditMesh * | em, | ||
| BMFace * | efa, | ||
| const bool | select, | ||
| const bool | do_history, | ||
| const BMUVOffsets | offsets ) |
Definition at line 305 of file uvedit_select.cc.
References BM_ELEM_CD_SET_BOOL, BM_ITER_ELEM, BM_LOOPS_OF_FACE, do_history(), l, select(), BMUVOffsets::select_edge, SI_STICKY_LOC, uvedit_uv_select_shared_vert(), and uvedit_vert_is_face_select_any_other().
Referenced by uvedit_face_select_set_with_sticky().
| bool uvedit_face_select_test | ( | const Scene * | scene, |
| BMFace * | efa, | ||
| const BMUVOffsets | offsets ) |
Definition at line 270 of file uvedit_select.cc.
References uvedit_face_select_test_ex().
Referenced by cylinder_project_exec(), do_lasso_select_mesh_uv(), ED_uvedit_selected_faces(), ED_uvedit_selectmode_clean(), smart_project_exec(), uv_circle_select_exec(), uv_cylinder_project(), uv_island_selected(), uv_map_clip_correct(), uv_mouse_select_multi(), uv_select_faceloop(), uv_select_linked_multi(), uv_select_more_less(), uv_select_overlap(), uv_select_similar_face_exec(), uv_sphere_project(), uvedit_is_face_affected_for_calc_uv_islands(), uvedit_unwrap_cube_project(), uvedit_vert_is_all_other_faces_selected(), and uvedit_vert_is_face_select_any_other().
| bool uvedit_face_select_test_ex | ( | const ToolSettings * | ts, |
| BMFace * | efa, | ||
| const BMUVOffsets | offsets ) |
Definition at line 245 of file uvedit_select.cc.
References BLI_assert, BM_ELEM_CD_GET_BOOL, BM_elem_flag_test, BM_ELEM_SELECT, BM_ITER_ELEM, BM_LOOPS_OF_FACE, l, BMUVOffsets::select_edge, BMUVOffsets::select_vert, ToolSettings::uv_flag, UV_SELECT_VERTEX, ToolSettings::uv_selectmode, and UV_SYNC_SELECTION.
Referenced by blender::draw::mesh_render_data_face_flag(), and uvedit_face_select_test().
Definition at line 240 of file uvedit_select.cc.
References uvedit_face_visible_test_ex().
Referenced by bm_clear_uv_vert_selection(), createTransUVs(), do_lasso_select_mesh_uv(), ED_uvedit_foreach_uv(), ED_uvedit_selected_edges(), ED_uvedit_selected_faces(), ED_uvedit_selected_verts(), ED_uvedit_selectmode_clean(), ED_uvedit_selectmode_flush(), edgetag_filter_cb(), facetag_filter_cb(), uv_box_select_exec(), uv_circle_select_exec(), uv_find_nearest_edge(), uv_find_nearest_face_ex(), uv_find_nearest_loop_from_edge(), uv_find_nearest_loop_from_vert(), uv_find_nearest_vert(), uv_hide_exec(), uv_isolate_selected_islands(), uv_mark_seam_exec(), uv_pin_exec(), uv_rip_object(), uv_seams_from_islands_exec(), uv_select_all(), uv_select_edgeloop_double_side_tag(), uv_select_edgeloop_single_side_tag(), uv_select_edgering(), uv_select_faceloop(), uv_select_flush_from_loop_edge_flag(), uv_select_invert(), uv_select_linked_multi(), uv_select_more_less(), uv_select_pinned_exec(), uv_select_similar_edge_exec(), uv_select_similar_face_exec(), uv_select_similar_vert_exec(), uv_select_split_exec(), uv_snap_uvs_to_adjacent_unselected(), uvedit_center(), uvedit_deselect_flush(), uvedit_edge_select_set_noflush(), uvedit_edge_select_set_with_sticky(), uvedit_face_select_set_with_sticky(), uvedit_first_selected_uv_from_vertex(), uvedit_loop_find_other_radial_loop_with_visible_face(), uvedit_nearest_uv(), uvedit_select_flush(), uvedit_select_is_any_selected(), uvedit_translate(), uvedit_uv_select_set_with_sticky(), uvedit_uv_select_shared_vert(), uvedit_vert_is_all_other_faces_selected(), uvedit_vert_is_edge_select_any_other(), uvedit_vert_is_face_select_any_other(), and verttag_filter_cb().
| bool uvedit_face_visible_test_ex | ( | const ToolSettings * | ts, |
| BMFace * | efa ) |
Definition at line 233 of file uvedit_select.cc.
References BM_elem_flag_test, BM_ELEM_HIDDEN, BM_ELEM_SELECT, ToolSettings::uv_flag, and UV_SYNC_SELECTION.
Referenced by uv_select_overlap(), and uvedit_face_visible_test().
| const float * uvedit_first_selected_uv_from_vertex | ( | Scene * | scene, |
| BMVert * | eve, | ||
| BMUVOffsets | offsets ) |
Definition at line 2015 of file uvedit_select.cc.
References BM_ELEM_CD_GET_FLOAT_P, BM_ITER_ELEM, BM_LOOPS_OF_VERT, BMLoop::f, l, BMUVOffsets::uv, uvedit_face_visible_test(), and uvedit_uv_select_test().
|
static |
Definition at line 775 of file uvedit_select.cc.
References BLI_assert, BM_vert_in_edge(), BMLoop::e, BMLoop::next, BMLoop::prev, uvedit_loop_find_other_radial_loop_with_visible_face(), and BMLoop::v.
Referenced by bm_select_edgeloop_single_side_next().
|
static |
Definition at line 748 of file uvedit_select.cc.
References BLI_assert, BM_loop_uv_share_edge_check(), BMLoop::f, BMLoop::radial_next, BMUVOffsets::uv, and uvedit_face_visible_test().
Referenced by bm_select_edgeloop_double_side_next(), uv_select_edgeloop(), uv_select_edgeloop_double_side_tag(), uv_select_edgeloop_single_side_tag(), uv_select_edgering(), uv_select_faceloop(), and uvedit_loop_find_other_boundary_loop_with_visible_face().
|
static |
Definition at line 1058 of file uvedit_select.cc.
References BKE_editmesh_from_object(), BLI_assert, BMEditMesh::bm, BM_ELEM_CD_GET_FLOAT_P, BM_FACE_FIRST_LOOP, BM_FACES_OF_MESH, BM_ITER_MESH, BM_uv_map_get_offsets(), copy_v2_v2(), len_squared_v2v2(), mul_v2_v2v2(), BMLoop::next, BMUVOffsets::uv, uvedit_face_visible_test(), and uvedit_uv_select_test().
Referenced by ED_uvedit_nearest_uv_multi().
| void uvedit_select_flush | ( | const Scene * | scene, |
| BMEditMesh * | em ) |
Mode independent UV selection flush.
Definition at line 1315 of file uvedit_select.cc.
References BLI_assert, BMEditMesh::bm, BM_ELEM_CD_GET_BOOL, BM_ELEM_CD_SET_BOOL, BM_FACES_OF_MESH, BM_ITER_ELEM, BM_ITER_MESH, BM_LOOPS_OF_FACE, BM_uv_map_ensure_edge_select_attr(), BM_uv_map_ensure_vert_select_attr(), BM_uv_map_get_offsets(), CD_PROP_FLOAT2, CustomData_get_active_layer_name(), l, BMesh::ldata, BMLoop::next, BMUVOffsets::select_edge, BMUVOffsets::select_vert, UNUSED_VARS_NDEBUG, ToolSettings::uv_flag, UV_SYNC_SELECTION, and uvedit_face_visible_test().
Referenced by uv_select_invert(), and uv_select_more_less().
Definition at line 2225 of file uvedit_select.cc.
References BKE_editmesh_from_object(), BMEditMesh::bm, BM_ELEM_CD_GET_BOOL, BM_FACES_OF_MESH, BM_ITER_ELEM, BM_ITER_MESH, BM_LOOPS_OF_FACE, BM_uv_map_get_offsets(), l, BMUVOffsets::select_vert, BMesh::totedgesel, BMesh::totfacesel, BMesh::totvertsel, ToolSettings::uv_flag, UV_SYNC_SELECTION, and uvedit_face_visible_test().
Referenced by uv_select_all_perform(), and uvedit_select_is_any_selected_multi().
Definition at line 2252 of file uvedit_select.cc.
References uvedit_select_is_any_selected().
Referenced by uv_select_all_perform_multi_ex().
| void uvedit_uv_select_disable | ( | const Scene * | scene, |
| BMesh * | bm, | ||
| BMLoop * | l, | ||
| const BMUVOffsets | offsets ) |
Definition at line 730 of file uvedit_select.cc.
References BLI_assert, bm, BM_ELEM_CD_SET_BOOL, BM_face_select_set(), BM_vert_select_set(), BMLoop::f, l, SCE_SELECT_FACE, BMUVOffsets::select_vert, ToolSettings::selectmode, ToolSettings::uv_flag, UV_SYNC_SELECTION, and BMLoop::v.
Referenced by uv_rip_object(), and uvedit_uv_select_set().
| void uvedit_uv_select_enable | ( | const Scene * | scene, |
| BMesh * | bm, | ||
| BMLoop * | l, | ||
| const bool | do_history, | ||
| const BMUVOffsets | offsets ) |
Definition at line 703 of file uvedit_select.cc.
References BLI_assert, bm, BM_ELEM_CD_SET_BOOL, BM_face_select_set(), BM_select_history_store, BM_vert_select_set(), do_history(), BMLoop::f, l, SCE_SELECT_EDGE, SCE_SELECT_FACE, BMUVOffsets::select_vert, ToolSettings::selectmode, ToolSettings::uv_flag, UV_SYNC_SELECTION, and BMLoop::v.
Referenced by stitch_propagate_uv_final_position(), uv_select_pinned_exec(), and uvedit_uv_select_set().
| void uvedit_uv_select_set | ( | const Scene * | scene, |
| BMesh * | bm, | ||
| BMLoop * | l, | ||
| bool | select, | ||
| bool | do_history, | ||
| BMUVOffsets | offsets ) |
Select UV Vertex.
Changes selection state of a single UV vertex.
Definition at line 688 of file uvedit_select.cc.
References bm, do_history(), l, select(), uvedit_uv_select_disable(), and uvedit_uv_select_enable().
Referenced by do_lasso_select_mesh_uv(), uv_box_select_exec(), uv_circle_select_exec(), uv_select_flush_from_tag_loop(), uv_select_flush_from_tag_sticky_loc_internal(), uv_select_similar_vert_exec(), uvedit_uv_select_set_with_sticky(), uvedit_uv_select_shared_vert(), uvedit_vertex_select_tagged(), and verttag_set_cb().
| void uvedit_uv_select_set_with_sticky | ( | const Scene * | scene, |
| BMEditMesh * | em, | ||
| BMLoop * | l, | ||
| const bool | select, | ||
| const bool | do_history, | ||
| const BMUVOffsets | offsets ) |
Definition at line 617 of file uvedit_select.cc.
References BMEditMesh::bm, do_history(), BMLoop::f, l, select(), SI_STICKY_DISABLE, SI_STICKY_LOC, SI_STICKY_VERTEX, ToolSettings::uv_flag, ToolSettings::uv_sticky, UV_SYNC_SELECTION, uvedit_face_visible_test(), uvedit_uv_select_set(), and uvedit_uv_select_shared_vert().
Referenced by uv_mouse_select_multi(), uv_select_edgeloop(), and uv_select_edgering().
| void uvedit_uv_select_shared_vert | ( | const Scene * | scene, |
| BMEditMesh * | em, | ||
| BMLoop * | l, | ||
| const bool | select, | ||
| const int | sticky_flag, | ||
| const bool | do_history, | ||
| BMUVOffsets | offsets ) |
Selects shared UVs based on #sticky_flag.
| sticky_flag | Type of sticky selection:
|
Definition at line 650 of file uvedit_select.cc.
References BLI_assert, BMEditMesh::bm, BM_DISK_EDGE_NEXT, BM_loop_uv_share_vert_check(), do_history(), BMLoop::e, ELEM, BMLoop::f, BMEdge::l, l, BMLoop::radial_next, select(), SI_STICKY_LOC, SI_STICKY_VERTEX, BMUVOffsets::uv, uvedit_face_visible_test(), uvedit_uv_select_set(), and BMLoop::v.
Referenced by uvedit_edge_select_shared_vert(), uvedit_face_select_shared_vert(), and uvedit_uv_select_set_with_sticky().
| bool uvedit_uv_select_test | ( | const Scene * | scene, |
| BMLoop * | l, | ||
| const BMUVOffsets | offsets ) |
Definition at line 612 of file uvedit_select.cc.
References l, and uvedit_uv_select_test_ex().
Referenced by bm_uv_build_islands(), BM_uv_element_map_create(), construct_param_handle_face_add(), createTransUVs(), do_lasso_select_mesh_uv(), ED_uvedit_foreach_uv(), ED_uvedit_selectmode_clean(), island_has_pins(), stitch_init(), texface_from_original_index(), uv_box_select_exec(), uv_circle_select_exec(), uv_find_nearest_vert(), uv_mouse_select_multi(), uv_pin_exec(), uv_remove_doubles_to_selected_shared_vertex(), uv_select_linked_multi(), uv_select_similar_vert_exec(), uv_shortest_path_pick_invoke(), uv_snap_uvs_to_adjacent_unselected(), uvedit_center(), uvedit_first_selected_uv_from_vertex(), uvedit_have_selection(), uvedit_is_face_affected(), uvedit_nearest_uv(), uvedit_prepare_pinned_indices(), uvedit_translate(), and verttag_test_cb().
| bool uvedit_uv_select_test_ex | ( | const ToolSettings * | ts, |
| const BMLoop * | l, | ||
| const BMUVOffsets | offsets ) |
Definition at line 588 of file uvedit_select.cc.
References BLI_assert, BM_ELEM_CD_GET_BOOL, BM_elem_flag_test_bool, BM_ELEM_SELECT, BMLoop::f, l, SCE_SELECT_EDGE, SCE_SELECT_FACE, BMUVOffsets::select_vert, ToolSettings::selectmode, ToolSettings::uv_flag, UV_SYNC_SELECTION, and BMLoop::v.
Referenced by blender::draw::mesh_render_data_loop_flag(), uv_set_connectivity_distance(), and uvedit_uv_select_test().
| bool uvedit_vert_is_all_other_faces_selected | ( | const Scene * | scene, |
| BMLoop * | l, | ||
| const BMUVOffsets | offsets ) |
Definition at line 1235 of file uvedit_select.cc.
References BLI_assert, BM_ITER_ELEM, BM_loop_uv_share_vert_check(), BM_LOOPS_OF_VERT, BMLoop::f, l, BMUVOffsets::uv, uvedit_face_select_test(), uvedit_face_visible_test(), and BMLoop::v.
Referenced by uv_select_more_less().
| bool uvedit_vert_is_edge_select_any_other | ( | const Scene * | scene, |
| BMLoop * | l, | ||
| const BMUVOffsets | offsets ) |
Definition at line 1194 of file uvedit_select.cc.
References BLI_assert, BM_DISK_EDGE_NEXT, BM_loop_uv_share_vert_check(), BMLoop::e, BMLoop::f, BMEdge::l, l, BMLoop::next, BMLoop::radial_next, BMUVOffsets::uv, uvedit_edge_select_test(), uvedit_face_visible_test(), and BMLoop::v.
Referenced by uvedit_edge_select_shared_vert().
| bool uvedit_vert_is_face_select_any_other | ( | const Scene * | scene, |
| BMLoop * | l, | ||
| const BMUVOffsets | offsets ) |
Definition at line 1217 of file uvedit_select.cc.
References BLI_assert, BM_ITER_ELEM, BM_loop_uv_share_vert_check(), BM_LOOPS_OF_VERT, BMLoop::f, l, BMUVOffsets::uv, uvedit_face_select_test(), uvedit_face_visible_test(), and BMLoop::v.
Referenced by uv_select_flush_from_tag_face(), and uvedit_face_select_shared_vert().
|
static |
Definition at line 215 of file uvedit_select.cc.
References BMEditMesh::bm, BM_elem_flag_test, BM_ELEM_TAG, BM_FACES_OF_MESH, BM_ITER_ELEM, BM_ITER_MESH, BM_LOOPS_OF_FACE, l, select(), uvedit_uv_select_set(), and BMLoop::v.
Referenced by do_lasso_select_mesh_uv(), uv_box_select_exec(), and uv_circle_select_exec().
|
static |
Definition at line 5158 of file uvedit_select.cc.
Referenced by UV_OT_select_similar().
|
static |
Definition at line 5145 of file uvedit_select.cc.
Referenced by UV_OT_select_similar(), and uv_select_similar_type_itemf().