Blender V5.0
ED_uvedit.hh File Reference
#include "BLI_function_ref.hh"
#include "BLI_vector_list.hh"
#include "BKE_customdata.hh"

Go to the source code of this file.

Classes

class  blender::ed::uv::UVSyncSelectFromMesh
struct  FaceIsland

Namespaces

namespace  blender
namespace  blender::ed
namespace  blender::ed::uv

Functions

void ED_operatortypes_uvedit ()
void ED_operatormacros_uvedit ()
void ED_keymap_uvedit (wmKeyConfig *keyconf)
void ED_uvedit_select_all (const ToolSettings *ts, BMesh *bm)
void ED_uvedit_foreach_uv (const Scene *scene, BMesh *bm, const bool skip_invisible, const bool selected, blender::FunctionRef< void(float[2])> user_fn)
void ED_uvedit_foreach_uv_multi (const Scene *scene, blender::Span< Object * > objects_edit, const bool skip_invisible, const bool skip_nonselected, blender::FunctionRef< void(float[2])> user_fn)
bool ED_uvedit_minmax_multi (const Scene *scene, blender::Span< Object * > objects_edit, float r_min[2], float r_max[2])
bool ED_uvedit_center_multi (const Scene *scene, blender::Span< Object * > objects_edit, float r_cent[2], char mode)
bool ED_uvedit_center_from_pivot_ex (const SpaceImage *sima, Scene *scene, ViewLayer *view_layer, float r_center[2], char mode, bool *r_has_select)
bool ED_object_get_active_image (Object *ob, int mat_nr, Image **r_ima, ImageUser **r_iuser, const bNode **r_node, const bNodeTree **r_ntree)
void ED_object_assign_active_image (Main *bmain, Object *ob, int mat_nr, Image *ima)
bool ED_uvedit_test (Object *obedit)
bool ED_uvedit_sync_uvselect_ignore (const ToolSettings *ts)
bool ED_uvedit_sync_uvselect_is_valid_or_ignore (const ToolSettings *ts, const BMesh *bm)
void ED_uvedit_sync_uvselect_ensure_if_needed (const ToolSettings *ts, BMesh *bm)
bool uvedit_face_visible_test_ex (const ToolSettings *ts, const BMFace *efa)
bool uvedit_face_select_test_ex (const ToolSettings *ts, const BMesh *bm, const BMFace *efa)
bool uvedit_edge_select_test_ex (const ToolSettings *ts, const BMesh *bm, const BMLoop *l, const BMUVOffsets &offsets)
bool uvedit_uv_select_test_ex (const ToolSettings *ts, const BMesh *bm, const BMLoop *l, const BMUVOffsets &offsets)
bool uvedit_face_visible_test (const Scene *scene, const BMFace *efa)
bool uvedit_face_select_test (const Scene *scene, const BMesh *bm, const BMFace *efa)
bool uvedit_edge_select_test (const Scene *scene, const BMesh *bm, const BMLoop *l, const BMUVOffsets &offsets)
bool uvedit_uv_select_test (const Scene *scene, const BMesh *bm, const BMLoop *l, const BMUVOffsets &offsets)
bool uvedit_loop_vert_select_get (const ToolSettings *ts, const BMesh *bm, const BMLoop *l)
bool uvedit_loop_edge_select_get (const ToolSettings *ts, const BMesh *bm, const BMLoop *l)
void uvedit_loop_vert_select_set (const ToolSettings *ts, const BMesh *bm, BMLoop *l, const bool select)
void uvedit_loop_edge_select_set (const ToolSettings *ts, const BMesh *bm, BMLoop *l, const bool select)
void uvedit_face_select_set (const Scene *scene, BMesh *bm, BMFace *efa, bool select)
 Select UV Face.
void uvedit_edge_select_set (const Scene *scene, BMesh *bm, BMLoop *l, bool select)
 Select UV Edge.
void uvedit_uv_select_set (const Scene *scene, BMesh *bm, BMLoop *l, bool select)
 Select UV Vertex.
void uvedit_face_select_enable (const Scene *scene, BMesh *bm, BMFace *efa)
void uvedit_face_select_disable (const Scene *scene, BMesh *bm, BMFace *efa)
void uvedit_edge_select_enable (const Scene *scene, BMesh *bm, BMLoop *l)
void uvedit_edge_select_disable (const Scene *scene, BMesh *bm, BMLoop *l)
void uvedit_uv_select_enable (const Scene *scene, BMesh *bm, BMLoop *l)
void uvedit_uv_select_disable (const Scene *scene, BMesh *bm, BMLoop *l)
void uvedit_face_select_set_with_sticky (const Scene *scene, BMesh *bm, BMFace *efa, bool select, const BMUVOffsets &offsets)
void uvedit_edge_select_set_with_sticky (const Scene *scene, BMesh *bm, BMLoop *l, bool select, const BMUVOffsets &offsets)
void uvedit_uv_select_set_with_sticky (const Scene *scene, BMesh *bm, BMLoop *l, bool select, const BMUVOffsets &offsets)
void uvedit_face_select_shared_vert (const Scene *scene, BMesh *bm, BMFace *efa, const bool select, const BMUVOffsets &offsets)
void uvedit_edge_select_shared_vert (const Scene *scene, BMesh *bm, BMLoop *l, const bool select, const int sticky_flag, const BMUVOffsets &offsets)
void uvedit_uv_select_shared_vert (const Scene *scene, BMesh *bm, BMLoop *l, const bool select, const int sticky_flag, const BMUVOffsets &offsets)
void uvedit_edge_select_set_noflush (const Scene *scene, BMesh *bm, BMLoop *l, const bool select, const int sticky_flag, 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)
void ED_uvedit_select_sync_multi (bContext *C)
void ED_uvedit_sticky_selectmode_update (bContext *C)
void ED_uvedit_selectmode_flush (const Scene *scene, BMesh *bm)
 UV Select Mode Flush.
void uvedit_select_flush_from_verts (const Scene *scene, BMesh *bm, bool select)
bool ED_uvedit_nearest_uv_multi (const View2D *v2d, const Scene *scene, blender::Span< Object * > objects, const float mval_fl[2], const bool ignore_selected, float *dist_sq, float r_uv[2])
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)
void ED_uvedit_active_vert_loop_set (BMesh *bm, BMLoop *l)
BMLoopED_uvedit_active_vert_loop_get (const ToolSettings *ts, BMesh *bm)
void ED_uvedit_active_edge_loop_set (BMesh *bm, BMLoop *l)
BMLoopED_uvedit_active_edge_loop_get (const ToolSettings *ts, BMesh *bm)
char ED_uvedit_select_mode_get (const Scene *scene)
bool ED_uvedit_select_island_check (const ToolSettings *ts)
void ED_uvedit_select_sync_flush (const ToolSettings *ts, BMesh *bm, bool select)
void ED_uvedit_deselect_all (const Scene *scene, Object *obedit, int action)
void ED_uvedit_get_aspect (Object *obedit, float *r_aspx, float *r_aspy)
float ED_uvedit_get_aspect_y (Object *obedit)
void ED_uvedit_get_aspect_from_material (Object *ob, const int material_index, float *r_aspx, float *r_aspy)
bool ED_uvedit_live_unwrap_timer_check (const wmTimer *timer)
void ED_uvedit_live_unwrap_begin (Scene *scene, Object *obedit, struct wmWindow *win_modal)
void ED_uvedit_live_unwrap_re_solve ()
void ED_uvedit_live_unwrap_end (bool cancel)
void ED_uvedit_live_unwrap (const Scene *scene, blender::Span< Object * > objects)
void ED_uvedit_add_simple_uvs (Main *bmain, const Scene *scene, Object *ob)
void ED_image_draw_cursor (ARegion *region, const float cursor[2])
void ED_uvedit_buttons_register (ARegionType *art)
int bm_mesh_calc_uv_islands (const Scene *scene, BMesh *bm, ListBase *island_list, const bool only_selected_faces, const bool only_selected_uvs, const bool use_seams, const float aspect_y, const BMUVOffsets &offsets)
bool uv_coords_isect_udim (const Image *image, const int udim_grid[2], const float coords[2])

Function Documentation

◆ bm_mesh_calc_uv_islands()

int bm_mesh_calc_uv_islands ( const Scene * scene,
BMesh * bm,
ListBase * island_list,
const bool only_selected_faces,
const bool only_selected_uvs,
const bool use_seams,
const float aspect_y,
const BMUVOffsets & offsets )

◆ ED_image_draw_cursor()

◆ ED_keymap_uvedit()

void ED_keymap_uvedit ( wmKeyConfig * keyconf)

◆ ED_object_assign_active_image()

void ED_object_assign_active_image ( Main * bmain,
Object * ob,
int mat_nr,
Image * ima )

◆ ED_object_get_active_image()

◆ ED_operatormacros_uvedit()

◆ ED_operatortypes_uvedit()

◆ ED_uvedit_active_edge_loop_get()

◆ ED_uvedit_active_edge_loop_set()

void ED_uvedit_active_edge_loop_set ( BMesh * bm,
BMLoop * l )

◆ ED_uvedit_active_vert_loop_get()

◆ ED_uvedit_active_vert_loop_set()

void ED_uvedit_active_vert_loop_set ( BMesh * bm,
BMLoop * l )

◆ ED_uvedit_add_simple_uvs()

◆ ED_uvedit_buttons_register()

◆ ED_uvedit_center_from_pivot_ex()

bool ED_uvedit_center_from_pivot_ex ( const SpaceImage * sima,
Scene * scene,
ViewLayer * view_layer,
float r_center[2],
char mode,
bool * r_has_select )

◆ ED_uvedit_center_multi()

bool ED_uvedit_center_multi ( const Scene * scene,
blender::Span< Object * > objects_edit,
float r_cent[2],
char mode )

◆ ED_uvedit_deselect_all()

◆ ED_uvedit_foreach_uv()

◆ ED_uvedit_foreach_uv_multi()

void ED_uvedit_foreach_uv_multi ( const Scene * scene,
blender::Span< Object * > objects_edit,
const bool skip_invisible,
const bool skip_nonselected,
blender::FunctionRef< void(float[2])> user_fn )

◆ ED_uvedit_get_aspect()

void ED_uvedit_get_aspect ( Object * obedit,
float * r_aspx,
float * r_aspy )

◆ ED_uvedit_get_aspect_from_material()

void ED_uvedit_get_aspect_from_material ( Object * ob,
const int material_index,
float * r_aspx,
float * r_aspy )

◆ ED_uvedit_get_aspect_y()

float ED_uvedit_get_aspect_y ( Object * obedit)

Return the X / Y aspect (wider aspects are over 1, taller are below 1). Apply this aspect by multiplying with the Y axis (X aspect is always 1 & unchanged).

Definition at line 525 of file uvedit_unwrap_ops.cc.

References ED_uvedit_get_aspect().

Referenced by construct_param_handle(), construct_param_handle_multi(), construct_param_handle_subsurfed(), correct_uv_aspect(), stitch_init(), uv_shortest_path_pick_exec(), uv_shortest_path_pick_invoke(), uv_shortest_path_select_exec(), and uvedit_pack_islands_multi().

◆ ED_uvedit_live_unwrap()

void ED_uvedit_live_unwrap ( const Scene * scene,
blender::Span< Object * > objects )

◆ ED_uvedit_live_unwrap_begin()

◆ ED_uvedit_live_unwrap_end()

◆ ED_uvedit_live_unwrap_re_solve()

◆ ED_uvedit_live_unwrap_timer_check()

bool ED_uvedit_live_unwrap_timer_check ( const wmTimer * timer)

Return true if the timer is managed by live-unwrap.

Definition at line 2130 of file uvedit_unwrap_ops.cc.

References g_live_unwrap, and timer.

Referenced by blender::ed::transform::transformEvent().

◆ ED_uvedit_minmax_multi()

bool ED_uvedit_minmax_multi ( const Scene * scene,
blender::Span< Object * > objects_edit,
float r_min[2],
float r_max[2] )

◆ ED_uvedit_nearest_uv_multi()

bool ED_uvedit_nearest_uv_multi ( const View2D * v2d,
const Scene * scene,
blender::Span< Object * > objects,
const float mval_fl[2],
const bool ignore_selected,
float * dist_sq,
float r_uv[2] )

References bm, l, select, and timer.

Referenced by blender::ed::transform::snap_target_uv_fn().

◆ ED_uvedit_select_all()

void ED_uvedit_select_all ( const ToolSettings * ts,
BMesh * bm )

Be careful when using this, it bypasses all synchronization options.

Definition at line 260 of file uvedit_ops.cc.

References bm, BM_FACES_OF_MESH, BM_ITER_ELEM, BM_ITER_MESH, BM_LOOPS_OF_FACE, l, uvedit_edge_select_set_no_sync(), uvedit_face_select_set_no_sync(), and uvedit_vert_select_set_no_sync().

Referenced by ED_uvedit_add_simple_uvs().

◆ ED_uvedit_select_island_check()

◆ ED_uvedit_select_mode_get()

◆ ED_uvedit_select_sync_flush()

◆ ED_uvedit_select_sync_multi()

void ED_uvedit_select_sync_multi ( bContext * C)

◆ ED_uvedit_selected_edges()

◆ ED_uvedit_selected_faces()

BMFace ** ED_uvedit_selected_faces ( const Scene * scene,
BMesh * bm,
int len_max,
int * r_faces_len )

◆ ED_uvedit_selected_verts()

◆ ED_uvedit_selectmode_clean()

◆ ED_uvedit_selectmode_clean_multi()

◆ ED_uvedit_selectmode_flush()

◆ ED_uvedit_sticky_selectmode_update()

◆ ED_uvedit_sync_uvselect_ensure_if_needed()

void ED_uvedit_sync_uvselect_ensure_if_needed ( const ToolSettings * ts,
BMesh * bm )

◆ ED_uvedit_sync_uvselect_ignore()

◆ ED_uvedit_sync_uvselect_is_valid_or_ignore()

bool ED_uvedit_sync_uvselect_is_valid_or_ignore ( const ToolSettings * ts,
const BMesh * bm )

◆ ED_uvedit_test()

bool ED_uvedit_test ( Object * obedit)

◆ uv_coords_isect_udim()

bool uv_coords_isect_udim ( const Image * image,
const int udim_grid[2],
const float coords[2] )

Returns true if UV coordinates lie on a valid tile in UDIM grid or tiled image.

Definition at line 29 of file uvedit_islands.cc.

References floorf, IMA_SRC_TILED, is_zero_v2(), LISTBASE_FOREACH, Image::source, tile, tile_index, and Image::tiles.

Referenced by blender::geometry::UVPackIsland_Params::setUDIMOffsetFromSpaceImage(), and uvedit_pack_islands_multi().

◆ uvedit_edge_select_disable()

◆ uvedit_edge_select_enable()

◆ uvedit_edge_select_set()

void uvedit_edge_select_set ( const Scene * scene,
BMesh * bm,
BMLoop * l,
bool select )

Select UV Edge.

Changes selection state of a single UV Edge.

Definition at line 787 of file uvedit_select.cc.

References bm, l, select, uvedit_edge_select_disable(), and uvedit_edge_select_enable().

Referenced by uv_select_similar_edge_exec(), uvedit_edge_select_flush_from_tag_sticky_loc_internal(), and uvedit_edge_select_set_with_sticky().

◆ uvedit_edge_select_set_noflush()

void uvedit_edge_select_set_noflush ( const Scene * scene,
BMesh * bm,
BMLoop * l,
const bool select,
const int sticky_flag,
const BMUVOffsets & offsets )

◆ uvedit_edge_select_set_with_sticky()

◆ uvedit_edge_select_shared_vert()

void uvedit_edge_select_shared_vert ( const Scene * scene,
BMesh * bm,
BMLoop * l,
const bool select,
const int sticky_flag,
const BMUVOffsets & offsets )

Selects UV edges and shared vertices according to sticky_flag.

Parameters
sticky_flag
  • UV_STICKY_LOCATION: selects all UV edges that share the same mesh vertices and UV coords.
  • UV_STICKY_VERT: selects all UV edges sharing the same mesh vertices.

Definition at line 727 of file uvedit_select.cc.

References BLI_assert, bm, bm_loop_select_edge_check_internal(), ELEM, l, BMLoop::next, BMLoop::radial_next, select, Scene::toolsettings, UV_STICKY_LOCATION, UV_STICKY_VERT, 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().

◆ uvedit_edge_select_test()

◆ uvedit_edge_select_test_ex()

◆ uvedit_face_select_disable()

◆ uvedit_face_select_enable()

◆ uvedit_face_select_set()

void uvedit_face_select_set ( const Scene * scene,
BMesh * bm,
BMFace * efa,
bool select )

◆ uvedit_face_select_set_with_sticky()

◆ uvedit_face_select_shared_vert()

◆ uvedit_face_select_test()

◆ uvedit_face_select_test_ex()

◆ uvedit_face_visible_test()

bool uvedit_face_visible_test ( const Scene * scene,
const BMFace * efa )

Definition at line 407 of file uvedit_select.cc.

References Scene::toolsettings, and uvedit_face_visible_test_ex().

Referenced by bm_clear_uv_vert_selection(), blender::ed::transform::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_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_flush_from_tag_loop(), 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_edge_select_flush_from_tag_sticky_loc_internal(), 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_from_verts(), uvedit_select_is_any_selected(), uvedit_translate(), uvedit_uv_select_flush_from_tag_sticky_loc_internal(), uvedit_uv_select_set_with_sticky(), uvedit_uv_select_shared_vert(), and verttag_filter_cb().

◆ uvedit_face_visible_test_ex()

◆ uvedit_loop_edge_select_get()

◆ uvedit_loop_edge_select_set()

void uvedit_loop_edge_select_set ( const ToolSettings * ts,
const BMesh * bm,
BMLoop * l,
const bool select )

◆ uvedit_loop_vert_select_get()

bool uvedit_loop_vert_select_get ( const ToolSettings * ts,
const BMesh * bm,
const BMLoop * l )

◆ uvedit_loop_vert_select_set()

void uvedit_loop_vert_select_set ( const ToolSettings * ts,
const BMesh * bm,
BMLoop * l,
const bool select )

◆ uvedit_select_flush_from_verts()

void uvedit_select_flush_from_verts ( const Scene * scene,
BMesh * bm,
bool select )

◆ uvedit_uv_select_disable()

◆ uvedit_uv_select_enable()

◆ uvedit_uv_select_set()

◆ uvedit_uv_select_set_with_sticky()

◆ uvedit_uv_select_shared_vert()

void uvedit_uv_select_shared_vert ( const Scene * scene,
BMesh * bm,
BMLoop * l,
const bool select,
const int sticky_flag,
const BMUVOffsets & offsets )

Selects shared UVs based on #sticky_flag.

Parameters
sticky_flagType of sticky selection:

Definition at line 996 of file uvedit_select.cc.

References BLI_assert, bm, BM_DISK_EDGE_NEXT, BM_loop_uv_share_vert_check(), ELEM, BMLoop::f, BMEdge::l, l, BMLoop::radial_next, select, BMUVOffsets::uv, UV_STICKY_LOCATION, UV_STICKY_VERT, 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().

◆ uvedit_uv_select_test()

◆ uvedit_uv_select_test_ex()