Blender V4.3
ED_uvedit.hh File Reference
#include "BKE_customdata.hh"

Go to the source code of this file.

Classes

struct  FaceIsland
 

Functions

void ED_operatortypes_uvedit ()
 
void ED_operatormacros_uvedit ()
 
void ED_keymap_uvedit (wmKeyConfig *keyconf)
 
void ED_uvedit_select_all (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 (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 uvedit_face_visible_test_ex (const ToolSettings *ts, BMFace *efa)
 
bool uvedit_face_select_test_ex (const ToolSettings *ts, BMFace *efa, BMUVOffsets offsets)
 
bool uvedit_edge_select_test_ex (const ToolSettings *ts, const BMLoop *l, BMUVOffsets offsets)
 
bool uvedit_uv_select_test_ex (const ToolSettings *ts, const BMLoop *l, BMUVOffsets offsets)
 
bool uvedit_face_visible_test (const Scene *scene, BMFace *efa)
 
bool uvedit_face_select_test (const Scene *scene, BMFace *efa, BMUVOffsets offsets)
 
bool uvedit_edge_select_test (const Scene *scene, BMLoop *l, BMUVOffsets offsets)
 
bool uvedit_uv_select_test (const Scene *scene, BMLoop *l, BMUVOffsets offsets)
 
void uvedit_face_select_set (const Scene *scene, BMesh *bm, BMFace *efa, bool select, bool do_history, BMUVOffsets offsets)
 Select UV Face.
 
void uvedit_edge_select_set (const Scene *scene, BMesh *bm, BMLoop *l, bool select, bool do_history, BMUVOffsets offsets)
 Select UV Edge.
 
void uvedit_uv_select_set (const Scene *scene, BMesh *bm, BMLoop *l, bool select, bool do_history, BMUVOffsets offsets)
 Select UV Vertex.
 
void uvedit_face_select_enable (const Scene *scene, BMesh *bm, BMFace *efa, bool do_history, BMUVOffsets offsets)
 
void uvedit_face_select_disable (const Scene *scene, BMesh *bm, BMFace *efa, BMUVOffsets offsets)
 
void uvedit_edge_select_enable (const Scene *scene, BMesh *bm, BMLoop *l, bool do_history, BMUVOffsets offsets)
 
void uvedit_edge_select_disable (const Scene *scene, BMesh *bm, BMLoop *l, BMUVOffsets offsets)
 
void uvedit_uv_select_enable (const Scene *scene, BMesh *bm, BMLoop *l, bool do_history, BMUVOffsets offsets)
 
void uvedit_uv_select_disable (const Scene *scene, BMesh *bm, BMLoop *l, BMUVOffsets offsets)
 
void uvedit_face_select_set_with_sticky (const Scene *scene, BMEditMesh *em, BMFace *efa, bool select, bool do_history, BMUVOffsets offsets)
 
void uvedit_edge_select_set_with_sticky (const Scene *scene, BMEditMesh *em, BMLoop *l, bool select, bool do_history, BMUVOffsets offsets)
 
void uvedit_uv_select_set_with_sticky (const Scene *scene, BMEditMesh *em, BMLoop *l, bool select, bool do_history, BMUVOffsets offsets)
 
void uvedit_face_select_shared_vert (const Scene *scene, BMEditMesh *em, BMFace *efa, const bool select, const bool do_history, 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, 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, BMUVOffsets offsets)
 
void uvedit_edge_select_set_noflush (const Scene *scene, BMLoop *l, const bool select, const int sticky_flag, 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_selectmode_flush (const Scene *scene, BMEditMesh *em)
 UV Select Mode Flush.
 
void uvedit_deselect_flush (const Scene *scene, BMEditMesh *em)
 
void uvedit_select_flush (const Scene *scene, BMEditMesh *em)
 
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_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)
 
void ED_uvedit_active_vert_loop_set (BMesh *bm, BMLoop *l)
 
BMLoopED_uvedit_active_vert_loop_get (BMesh *bm)
 
void ED_uvedit_active_edge_loop_set (BMesh *bm, BMLoop *l)
 
BMLoopED_uvedit_active_edge_loop_get (BMesh *bm)
 
char ED_uvedit_select_mode_get (const Scene *scene)
 
void ED_uvedit_select_sync_flush (const ToolSettings *ts, BMEditMesh *em, bool select)
 
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, 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,
BMUVOffsets offsets )

◆ ED_image_draw_cursor()

◆ ED_keymap_uvedit()

void ED_keymap_uvedit ( wmKeyConfig * keyconf)

◆ ED_object_assign_active_image()

◆ 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 ( 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_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 513 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 2064 of file uvedit_unwrap_ops.cc.

References g_live_unwrap, and timer.

Referenced by 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] )

Referenced by snap_target_uv_fn().

◆ ED_uvedit_select_all()

void ED_uvedit_select_all ( BMesh * bm)

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

Definition at line 256 of file uvedit_ops.cc.

References bm, BM_ELEM_CD_SET_BOOL, BM_FACES_OF_MESH, BM_ITER_ELEM, BM_ITER_MESH, BM_LOOPS_OF_FACE, BM_uv_map_get_offsets(), l, BMUVOffsets::select_edge, and BMUVOffsets::select_vert.

Referenced by ED_uvedit_add_simple_uvs().

◆ ED_uvedit_select_mode_get()

◆ ED_uvedit_select_sync_flush()

◆ 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_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, tile, and tile_index.

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

◆ uvedit_deselect_flush()

◆ 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,
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().

◆ uvedit_edge_select_set_noflush()

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

◆ uvedit_edge_select_set_with_sticky()

◆ uvedit_edge_select_shared_vert()

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.

Parameters
sticky_flag
  • SI_STICKY_LOC: selects all UV edges that share the same mesh vertices and UV coordinates.
  • SI_STICKY_VERTEX: selects all UV edges sharing the same mesh vertices.

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().

◆ 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,
bool do_history,
BMUVOffsets offsets )

◆ uvedit_face_select_set_with_sticky()

◆ uvedit_face_select_shared_vert()

void uvedit_face_select_shared_vert ( const Scene * scene,
BMEditMesh * em,
BMFace * efa,
const bool select,
const bool do_history,
BMUVOffsets offsets )

◆ uvedit_face_select_test()

◆ uvedit_face_select_test_ex()

◆ uvedit_face_visible_test()

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

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().

◆ uvedit_face_visible_test_ex()

bool uvedit_face_visible_test_ex ( const ToolSettings * ts,
BMFace * efa )

◆ uvedit_select_flush()

◆ 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,
BMEditMesh * em,
BMLoop * l,
const bool select,
const int sticky_flag,
const bool do_history,
BMUVOffsets offsets )

Selects shared UVs based on #sticky_flag.

Parameters
sticky_flagType 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().

◆ uvedit_uv_select_test()

◆ uvedit_uv_select_test_ex()