Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Stokes <kupomail@gmail.com>2012-04-26 07:11:15 +0400
committerDaniel Stokes <kupomail@gmail.com>2012-04-26 07:11:15 +0400
commitf306b50700b05707f44b5472ac0b38d58fb01b0d (patch)
treecfa63e4c17e02752b8c97752fa1ca31bc5b8546e /source/blender/editors/uvedit/uvedit_ops.c
parentef9fbb56f7d26d39de118f939995529710f141bc (diff)
parent2f74471dd96382521c57e53fc99fb0df3974f7dc (diff)
Merged revisions 45910-45967 from trunk/blender
Diffstat (limited to 'source/blender/editors/uvedit/uvedit_ops.c')
-rw-r--r--source/blender/editors/uvedit/uvedit_ops.c372
1 files changed, 195 insertions, 177 deletions
diff --git a/source/blender/editors/uvedit/uvedit_ops.c b/source/blender/editors/uvedit/uvedit_ops.c
index c08093e09ee..1c62ce3a684 100644
--- a/source/blender/editors/uvedit/uvedit_ops.c
+++ b/source/blender/editors/uvedit/uvedit_ops.c
@@ -82,7 +82,7 @@
#include "uvedit_intern.h"
-#define EFA_F1_FLAG 2
+static void select_all_perform(Scene *scene, Image *ima, BMEditMesh *em, int action);
/************************* state testing ************************/
@@ -207,7 +207,7 @@ void ED_uvedit_assign_image(Main *bmain, Scene *scene, Object *obedit, Image *im
BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
tf = CustomData_bmesh_get(&em->bm->pdata, efa->head.data, CD_MTEXPOLY);
- if (uvedit_face_visible(scene, previma, efa, tf)) {
+ if (uvedit_face_visible_test(scene, previma, efa, tf)) {
if (ima) {
tf->tpage = ima;
@@ -293,7 +293,7 @@ int uvedit_face_visible_nolocal(Scene *scene, BMFace *efa)
return (BM_elem_flag_test(efa, BM_ELEM_HIDDEN) == 0 && BM_elem_flag_test(efa, BM_ELEM_SELECT));
}
-int uvedit_face_visible(Scene *scene, Image *ima, BMFace *efa, MTexPoly *tf)
+int uvedit_face_visible_test(Scene *scene, Image *ima, BMFace *efa, MTexPoly *tf)
{
ToolSettings *ts = scene->toolsettings;
@@ -303,7 +303,7 @@ int uvedit_face_visible(Scene *scene, Image *ima, BMFace *efa, MTexPoly *tf)
return uvedit_face_visible_nolocal(scene, efa);
}
-int uvedit_face_selected(Scene *scene, BMEditMesh *em, BMFace *efa)
+int uvedit_face_select_test(Scene *scene, BMEditMesh *em, BMFace *efa)
{
ToolSettings *ts = scene->toolsettings;
@@ -324,12 +324,16 @@ int uvedit_face_selected(Scene *scene, BMEditMesh *em, BMFace *efa)
}
}
-int uvedit_face_select(Scene *scene, BMEditMesh *em, BMFace *efa)
+int uvedit_face_select_enable(Scene *scene, BMEditMesh *em, BMFace *efa, const short do_history)
{
ToolSettings *ts = scene->toolsettings;
- if (ts->uv_flag & UV_SYNC_SELECTION)
+ if (ts->uv_flag & UV_SYNC_SELECTION) {
BM_face_select_set(em->bm, efa, TRUE);
+ if (do_history) {
+ BM_select_history_store(em->bm, (BMElem *)efa);
+ }
+ }
else {
BMLoop *l;
MLoopUV *luv;
@@ -346,7 +350,7 @@ int uvedit_face_select(Scene *scene, BMEditMesh *em, BMFace *efa)
return 0;
}
-int uvedit_face_deselect(Scene *scene, BMEditMesh *em, BMFace *efa)
+int uvedit_face_select_disable(Scene *scene, BMEditMesh *em, BMFace *efa)
{
ToolSettings *ts = scene->toolsettings;
@@ -369,7 +373,7 @@ int uvedit_face_deselect(Scene *scene, BMEditMesh *em, BMFace *efa)
return 0;
}
-int uvedit_edge_selected(BMEditMesh *em, Scene *scene, BMLoop *l)
+int uvedit_edge_select_test(BMEditMesh *em, Scene *scene, BMLoop *l)
{
ToolSettings *ts = scene->toolsettings;
@@ -395,7 +399,7 @@ int uvedit_edge_selected(BMEditMesh *em, Scene *scene, BMLoop *l)
}
}
-void uvedit_edge_select(BMEditMesh *em, Scene *scene, BMLoop *l)
+void uvedit_edge_select_enable(BMEditMesh *em, Scene *scene, BMLoop *l, const short do_history)
{
ToolSettings *ts = scene->toolsettings;
@@ -409,6 +413,10 @@ void uvedit_edge_select(BMEditMesh *em, Scene *scene, BMLoop *l)
BM_vert_select_set(em->bm, l->e->v1, TRUE);
BM_vert_select_set(em->bm, l->e->v2, TRUE);
}
+
+ if (do_history) {
+ BM_select_history_store(em->bm, (BMElem *)l->e);
+ }
}
else {
MLoopUV *luv1, *luv2;
@@ -421,7 +429,7 @@ void uvedit_edge_select(BMEditMesh *em, Scene *scene, BMLoop *l)
}
}
-void uvedit_edge_deselect(BMEditMesh *em, Scene *scene, BMLoop *l)
+void uvedit_edge_select_disable(BMEditMesh *em, Scene *scene, BMLoop *l)
{
ToolSettings *ts = scene->toolsettings;
@@ -447,7 +455,7 @@ void uvedit_edge_deselect(BMEditMesh *em, Scene *scene, BMLoop *l)
}
}
-int uvedit_uv_selected(BMEditMesh *em, Scene *scene, BMLoop *l)
+int uvedit_uv_select_test(BMEditMesh *em, Scene *scene, BMLoop *l)
{
ToolSettings *ts = scene->toolsettings;
@@ -464,7 +472,7 @@ int uvedit_uv_selected(BMEditMesh *em, Scene *scene, BMLoop *l)
}
}
-void uvedit_uv_select(BMEditMesh *em, Scene *scene, BMLoop *l)
+void uvedit_uv_select_enable(BMEditMesh *em, Scene *scene, BMLoop *l, const short do_history)
{
ToolSettings *ts = scene->toolsettings;
@@ -473,6 +481,10 @@ void uvedit_uv_select(BMEditMesh *em, Scene *scene, BMLoop *l)
BM_face_select_set(em->bm, l->f, TRUE);
else
BM_vert_select_set(em->bm, l->v, TRUE);
+
+ if (do_history) {
+ BM_select_history_remove(em->bm, (BMElem *)l->v);
+ }
}
else {
MLoopUV *luv = CustomData_bmesh_get(&em->bm->ldata, l->head.data, CD_MLOOPUV);
@@ -481,7 +493,7 @@ void uvedit_uv_select(BMEditMesh *em, Scene *scene, BMLoop *l)
}
}
-void uvedit_uv_deselect(BMEditMesh *em, Scene *scene, BMLoop *l)
+void uvedit_uv_select_disable(BMEditMesh *em, Scene *scene, BMLoop *l)
{
ToolSettings *ts = scene->toolsettings;
@@ -584,11 +596,11 @@ int ED_uvedit_minmax(Scene *scene, Image *ima, Object *obedit, float *min, float
sel = 0;
BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
tf = CustomData_bmesh_get(&em->bm->pdata, efa->head.data, CD_MTEXPOLY);
- if (!uvedit_face_visible(scene, ima, efa, tf))
+ if (!uvedit_face_visible_test(scene, ima, efa, tf))
continue;
BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) {
- if (uvedit_uv_selected(em, scene, l)) {
+ if (uvedit_uv_select_test(em, scene, l)) {
luv = CustomData_bmesh_get(&em->bm->ldata, l->head.data, CD_MLOOPUV);
DO_MINMAX2(luv->uv, min, max);
sel = 1;
@@ -612,12 +624,12 @@ static int ED_uvedit_median(Scene *scene, Image *ima, Object *obedit, float co[2
zero_v2(co);
BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
tf = CustomData_bmesh_get(&em->bm->pdata, efa->head.data, CD_MTEXPOLY);
- if (!uvedit_face_visible(scene, ima, efa, tf))
+ if (!uvedit_face_visible_test(scene, ima, efa, tf))
continue;
BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) {
luv = CustomData_bmesh_get(&em->bm->ldata, l->head.data, CD_MLOOPUV);
- if (uvedit_uv_selected(em, scene, l)) {
+ if (uvedit_uv_select_test(em, scene, l)) {
add_v2_v2(co, luv->uv);
sel++;
}
@@ -668,7 +680,7 @@ void uv_find_nearest_edge(Scene *scene, Image *ima, BMEditMesh *em, float co[2],
BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
tf = CustomData_bmesh_get(&em->bm->pdata, efa->head.data, CD_MTEXPOLY);
- if (!uvedit_face_visible(scene, ima, efa, tf))
+ if (!uvedit_face_visible_test(scene, ima, efa, tf))
continue;
i = 0;
@@ -717,7 +729,7 @@ static void find_nearest_uv_face(Scene *scene, Image *ima, BMEditMesh *em, float
BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
tf = CustomData_bmesh_get(&em->bm->pdata, efa->head.data, CD_MTEXPOLY);
- if (!uvedit_face_visible(scene, ima, efa, tf))
+ if (!uvedit_face_visible_test(scene, ima, efa, tf))
continue;
cent[0] = cent[1] = 0.0f;
@@ -808,14 +820,14 @@ void uv_find_nearest_vert(Scene *scene, Image *ima, BMEditMesh *em,
BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
tf = CustomData_bmesh_get(&em->bm->pdata, efa->head.data, CD_MTEXPOLY);
- if (!uvedit_face_visible(scene, ima, efa, tf))
+ if (!uvedit_face_visible_test(scene, ima, efa, tf))
continue;
i = 0;
BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) {
luv = CustomData_bmesh_get(&em->bm->ldata, l->head.data, CD_MLOOPUV);
- if (penalty && uvedit_uv_selected(em, scene, l))
+ if (penalty && uvedit_uv_select_test(em, scene, l))
dist = fabs(co[0] - luv->uv[0]) + penalty[0] + fabs(co[1] - luv->uv[1]) + penalty[1];
else
dist = fabs(co[0] - luv->uv[0]) + fabs(co[1] - luv->uv[1]);
@@ -861,7 +873,7 @@ int ED_uvedit_nearest_uv(Scene *scene, Object *obedit, Image *ima, float co[2],
BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
tf = CustomData_bmesh_get(&em->bm->pdata, efa->head.data, CD_MTEXPOLY);
- if (!uvedit_face_visible(scene, ima, efa, tf))
+ if (!uvedit_face_visible_test(scene, ima, efa, tf))
continue;
BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) {
@@ -881,9 +893,22 @@ int ED_uvedit_nearest_uv(Scene *scene, Object *obedit, Image *ima, float co[2],
return found;
}
+UvElement *ED_uv_element_get(UvElementMap *map, BMFace *efa, BMLoop *l)
+{
+ UvElement *element;
+
+ element = map->vert[BM_elem_index_get(l->v)];
+
+ for (; element; element = element->next)
+ if (element->face == efa)
+ return element;
+
+ return NULL;
+}
+
/*********************** loop select ***********************/
-static void uv_vertex_loop_flag(UvMapVert *first)
+static void select_edgeloop_uv_vertex_loop_flag(UvMapVert *first)
{
UvMapVert *iterv;
int count = 0;
@@ -899,7 +924,7 @@ static void uv_vertex_loop_flag(UvMapVert *first)
first->flag = 1;
}
-static UvMapVert *uv_vertex_map_get(UvVertMap *vmap, BMFace *efa, int a)
+static UvMapVert *select_edgeloop_uv_vertex_map_get(UvVertMap *vmap, BMFace *efa, int a)
{
UvMapVert *iterv, *first;
BMLoop *l;
@@ -917,20 +942,7 @@ static UvMapVert *uv_vertex_map_get(UvVertMap *vmap, BMFace *efa, int a)
return NULL;
}
-UvElement *ED_uv_element_get(UvElementMap *map, BMFace *efa, BMLoop *l)
-{
- UvElement *element;
-
- element = map->vert[BM_elem_index_get(l->v)];
-
- for (; element; element = element->next)
- if (element->face == efa)
- return element;
-
- return NULL;
-}
-
-static int uv_edge_tag_faces(BMEditMesh *em, UvMapVert *first1, UvMapVert *first2, int *totface)
+static int select_edgeloop_uv_edge_tag_faces(BMEditMesh *em, UvMapVert *first1, UvMapVert *first2, int *totface)
{
UvMapVert *iterv1, *iterv2;
BMFace *efa;
@@ -948,7 +960,7 @@ static int uv_edge_tag_faces(BMEditMesh *em, UvMapVert *first1, UvMapVert *first
if (iterv1->f == iterv2->f) {
/* if face already tagged, don't do this edge */
efa = EDBM_face_at_index(em, iterv1->f);
- if (BMO_elem_flag_test(em->bm, efa, EFA_F1_FLAG))
+ if (BM_elem_flag_test(efa, BM_ELEM_TAG))
return 0;
tot++;
@@ -973,7 +985,7 @@ static int uv_edge_tag_faces(BMEditMesh *em, UvMapVert *first1, UvMapVert *first
if (iterv1->f == iterv2->f) {
efa = EDBM_face_at_index(em, iterv1->f);
- BMO_elem_flag_enable(em->bm, efa, EFA_F1_FLAG);
+ BM_elem_flag_enable(efa, BM_ELEM_TAG);
break;
}
}
@@ -982,7 +994,8 @@ static int uv_edge_tag_faces(BMEditMesh *em, UvMapVert *first1, UvMapVert *first
return 1;
}
-static int select_edgeloop(Scene *scene, Image *ima, BMEditMesh *em, NearestHit *hit, float limit[2], int extend)
+static int select_edgeloop(Scene *scene, Image *ima, BMEditMesh *em, NearestHit *hit,
+ float limit[2], const short extend)
{
BMFace *efa;
BMIter iter, liter;
@@ -990,37 +1003,29 @@ static int select_edgeloop(Scene *scene, Image *ima, BMEditMesh *em, NearestHit
MTexPoly *tf;
UvVertMap *vmap;
UvMapVert *iterv1, *iterv2;
- int a, count, looking, nverts, starttotf, select;
+ int a, looking, nverts, starttotf, select;
/* setup */
EDBM_index_arrays_init(em, 0, 0, 1);
vmap = EDBM_uv_vert_map_create(em, 0, 0, limit);
- BM_mesh_elem_index_ensure(em->bm, BM_VERT);
+ BM_mesh_elem_index_ensure(em->bm, BM_VERT | BM_FACE);
- count = 0;
- BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
- if (!extend) {
- uvedit_face_deselect(scene, em, efa);
- }
-
- BMO_elem_flag_disable(em->bm, efa, EFA_F1_FLAG);
-
- BM_elem_index_set(efa, count); /* set_inline */
-
- count++;
+ if (!extend) {
+ select_all_perform(scene, ima, em, SEL_DESELECT);
}
- em->bm->elem_index_dirty &= ~BM_FACE;
+
+ BM_mesh_elem_hflag_disable_all(em->bm, BM_FACE, BM_ELEM_TAG, FALSE);
/* set flags for first face and verts */
nverts = hit->efa->len;
- iterv1 = uv_vertex_map_get(vmap, hit->efa, hit->lindex);
- iterv2 = uv_vertex_map_get(vmap, hit->efa, (hit->lindex + 1) % nverts);
- uv_vertex_loop_flag(iterv1);
- uv_vertex_loop_flag(iterv2);
+ iterv1 = select_edgeloop_uv_vertex_map_get(vmap, hit->efa, hit->lindex);
+ iterv2 = select_edgeloop_uv_vertex_map_get(vmap, hit->efa, (hit->lindex + 1) % nverts);
+ select_edgeloop_uv_vertex_loop_flag(iterv1);
+ select_edgeloop_uv_vertex_loop_flag(iterv2);
starttotf = 0;
- uv_edge_tag_faces(em, iterv1, iterv2, &starttotf);
+ select_edgeloop_uv_edge_tag_faces(em, iterv1, iterv2, &starttotf);
/* sorry, first edge isn't even ok */
if (iterv1->flag == 0 && iterv2->flag == 0) looking = 0;
@@ -1035,24 +1040,24 @@ static int select_edgeloop(Scene *scene, Image *ima, BMEditMesh *em, NearestHit
BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
tf = CustomData_bmesh_get(&em->bm->pdata, efa->head.data, CD_MTEXPOLY);
- if (!BMO_elem_flag_test(em->bm, efa, EFA_F1_FLAG) && uvedit_face_visible(scene, ima, efa, tf)) {
+ if (!BM_elem_flag_test(efa, BM_ELEM_TAG) && uvedit_face_visible_test(scene, ima, efa, tf)) {
nverts = efa->len;
for (a = 0; a < nverts; a++) {
/* check face not hidden and not tagged */
- iterv1 = uv_vertex_map_get(vmap, efa, a);
- iterv2 = uv_vertex_map_get(vmap, efa, (a + 1) % nverts);
+ iterv1 = select_edgeloop_uv_vertex_map_get(vmap, efa, a);
+ iterv2 = select_edgeloop_uv_vertex_map_get(vmap, efa, (a + 1) % nverts);
if (!iterv1 || !iterv2)
continue;
/* check if vertex is tagged and has right valence */
if (iterv1->flag || iterv2->flag) {
- if (uv_edge_tag_faces(em, iterv1, iterv2, &starttotf)) {
+ if (select_edgeloop_uv_edge_tag_faces(em, iterv1, iterv2, &starttotf)) {
looking = 1;
- BMO_elem_flag_enable(em->bm, efa, EFA_F1_FLAG);
+ BM_elem_flag_enable(efa, BM_ELEM_TAG);
- uv_vertex_loop_flag(iterv1);
- uv_vertex_loop_flag(iterv2);
+ select_edgeloop_uv_vertex_loop_flag(iterv1);
+ select_edgeloop_uv_vertex_loop_flag(iterv2);
break;
}
}
@@ -1063,13 +1068,13 @@ static int select_edgeloop(Scene *scene, Image *ima, BMEditMesh *em, NearestHit
/* do the actual select/deselect */
nverts = hit->efa->len;
- iterv1 = uv_vertex_map_get(vmap, hit->efa, hit->lindex);
- iterv2 = uv_vertex_map_get(vmap, hit->efa, (hit->lindex + 1) % nverts);
+ iterv1 = select_edgeloop_uv_vertex_map_get(vmap, hit->efa, hit->lindex);
+ iterv2 = select_edgeloop_uv_vertex_map_get(vmap, hit->efa, (hit->lindex + 1) % nverts);
iterv1->flag = 1;
iterv2->flag = 1;
if (extend) {
- if (uvedit_uv_selected(em, scene, hit->l))
+ if (uvedit_uv_select_test(em, scene, hit->l))
select = 0;
else
select = 1;
@@ -1080,11 +1085,11 @@ static int select_edgeloop(Scene *scene, Image *ima, BMEditMesh *em, NearestHit
BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
a = 0;
BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) {
- iterv1 = uv_vertex_map_get(vmap, efa, a);
+ iterv1 = select_edgeloop_uv_vertex_map_get(vmap, efa, a);
if (iterv1->flag) {
- if (select) uvedit_uv_select(em, scene, l);
- else uvedit_uv_deselect(em, scene, l);
+ if (select) uvedit_uv_select_enable(em, scene, l, FALSE);
+ else uvedit_uv_select_disable(em, scene, l);
}
a++;
@@ -1126,7 +1131,7 @@ static void select_linked(Scene *scene, Image *ima, BMEditMesh *em, float limit[
BM_ITER_MESH_INDEX (efa, &iter, em->bm, BM_FACES_OF_MESH, a) {
tf = CustomData_bmesh_get(&em->bm->pdata, efa->head.data, CD_MTEXPOLY);
- if (uvedit_face_visible(scene, ima, efa, tf)) {
+ if (uvedit_face_visible_test(scene, ima, efa, tf)) {
BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) {
luv = CustomData_bmesh_get(&em->bm->ldata, l->head.data, CD_MLOOPUV);
@@ -1285,10 +1290,10 @@ static float *uv_sel_co_from_eve(Scene *scene, Image *ima, BMEditMesh *em, BMVer
BM_ITER_ELEM (l, &liter, eve, BM_LOOPS_OF_VERT) {
MTexPoly *tf = CustomData_bmesh_get(&em->bm->pdata, l->f->head.data, CD_MTEXPOLY);
- if (!uvedit_face_visible(scene, ima, l->f, tf))
+ if (!uvedit_face_visible_test(scene, ima, l->f, tf))
continue;
- if (uvedit_uv_selected(em, scene, l)) {
+ if (uvedit_uv_select_test(em, scene, l)) {
MLoopUV *luv = CustomData_bmesh_get(&em->bm->ldata, l->head.data, CD_MLOOPUV);
return luv->uv;
}
@@ -1326,11 +1331,11 @@ static void weld_align_uv(bContext *C, int tool)
BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
tf = CustomData_bmesh_get(&em->bm->pdata, efa->head.data, CD_MTEXPOLY);
- if (!uvedit_face_visible(scene, ima, efa, tf))
+ if (!uvedit_face_visible_test(scene, ima, efa, tf))
continue;
BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) {
- if (uvedit_uv_selected(em, scene, l)) {
+ if (uvedit_uv_select_test(em, scene, l)) {
luv = CustomData_bmesh_get(&em->bm->ldata, l->head.data, CD_MLOOPUV);
DO_MINMAX2(luv->uv, min, max);
}
@@ -1348,11 +1353,11 @@ static void weld_align_uv(bContext *C, int tool)
BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
tf = CustomData_bmesh_get(&em->bm->pdata, efa->head.data, CD_MTEXPOLY);
- if (!uvedit_face_visible(scene, ima, efa, tf))
+ if (!uvedit_face_visible_test(scene, ima, efa, tf))
continue;
BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) {
- if (uvedit_uv_selected(em, scene, l)) {
+ if (uvedit_uv_select_test(em, scene, l)) {
luv = CustomData_bmesh_get(&em->bm->ldata, l->head.data, CD_MLOOPUV);
luv->uv[0] = cent[0];
}
@@ -1367,11 +1372,11 @@ static void weld_align_uv(bContext *C, int tool)
BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
tf = CustomData_bmesh_get(&em->bm->pdata, efa->head.data, CD_MTEXPOLY);
- if (!uvedit_face_visible(scene, ima, efa, tf))
+ if (!uvedit_face_visible_test(scene, ima, efa, tf))
continue;
BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) {
- if (uvedit_uv_selected(em, scene, l)) {
+ if (uvedit_uv_select_test(em, scene, l)) {
luv = CustomData_bmesh_get(&em->bm->ldata, l->head.data, CD_MLOOPUV);
luv->uv[1] = cent[1];
}
@@ -1397,10 +1402,10 @@ static void weld_align_uv(bContext *C, int tool)
BM_ITER_ELEM (l, &liter, eve, BM_LOOPS_OF_VERT) {
tf = CustomData_bmesh_get(&em->bm->pdata, l->f->head.data, CD_MTEXPOLY);
- if (!uvedit_face_visible(scene, ima, l->f, tf))
+ if (!uvedit_face_visible_test(scene, ima, l->f, tf))
continue;
- if (uvedit_uv_selected(em, scene, l)) {
+ if (uvedit_uv_select_test(em, scene, l)) {
BM_elem_flag_enable(eve, BM_ELEM_TAG);
break;
}
@@ -1487,10 +1492,10 @@ static void weld_align_uv(bContext *C, int tool)
BM_ITER_ELEM (l, &liter, eve_line[i], BM_LOOPS_OF_VERT) {
tf = CustomData_bmesh_get(&em->bm->pdata, l->f->head.data, CD_MTEXPOLY);
- if (!uvedit_face_visible(scene, ima, l->f, tf))
+ if (!uvedit_face_visible_test(scene, ima, l->f, tf))
continue;
- if (uvedit_uv_selected(em, scene, l)) {
+ if (uvedit_uv_select_test(em, scene, l)) {
MLoopUV *luv = CustomData_bmesh_get(&em->bm->ldata, l->head.data, CD_MLOOPUV);
/* Projection of point (x, y) over line (x1, y1, x2, y2) along X axis:
* new_y = (y2 - y1) / (x2 - x1) * (x - x1) + y1
@@ -1582,30 +1587,20 @@ static void UV_OT_weld(wmOperatorType *ot)
/* ******************** (de)select all operator **************** */
-static void select_all_perform(bContext *C, int action)
+static void select_all_perform(Scene *scene, Image *ima, BMEditMesh *em, int action)
{
- Scene *scene;
- ToolSettings *ts;
- Object *obedit;
- BMEditMesh *em;
+ ToolSettings *ts = scene->toolsettings;
BMFace *efa;
BMLoop *l;
BMIter iter, liter;
- Image *ima;
MTexPoly *tf;
MLoopUV *luv;
-
- scene = CTX_data_scene(C);
- ts = CTX_data_tool_settings(C);
- obedit = CTX_data_edit_object(C);
- em = BMEdit_FromObject(obedit);
- ima = CTX_data_edit_image(C);
-
+
if (ts->uv_flag & UV_SYNC_SELECTION) {
switch (action) {
case SEL_TOGGLE:
- EDBM_select_toggle_all(BMEdit_FromObject(obedit));
+ EDBM_select_toggle_all(em);
break;
case SEL_SELECT:
EDBM_flag_enable_all(em, BM_ELEM_SELECT);
@@ -1625,7 +1620,7 @@ static void select_all_perform(bContext *C, int action)
BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
tf = CustomData_bmesh_get(&em->bm->pdata, efa->head.data, CD_MTEXPOLY);
- if (!uvedit_face_visible(scene, ima, efa, tf))
+ if (!uvedit_face_visible_test(scene, ima, efa, tf))
continue;
BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) {
@@ -1643,7 +1638,7 @@ static void select_all_perform(bContext *C, int action)
BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
tf = CustomData_bmesh_get(&em->bm->pdata, efa->head.data, CD_MTEXPOLY);
- if (!uvedit_face_visible(scene, ima, efa, tf))
+ if (!uvedit_face_visible_test(scene, ima, efa, tf))
continue;
BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) {
@@ -1667,10 +1662,14 @@ static void select_all_perform(bContext *C, int action)
static int select_all_exec(bContext *C, wmOperator *op)
{
+ Scene *scene = CTX_data_scene(C);
Object *obedit = CTX_data_edit_object(C);
+ Image *ima = CTX_data_edit_image(C);
+ BMEditMesh *em = BMEdit_FromObject(obedit);
+
int action = RNA_enum_get(op->ptr, "action");
- select_all_perform(C, action);
+ select_all_perform(scene, ima, em, action);
WM_event_add_notifier(C, NC_GEOM | ND_SELECT, obedit->data);
@@ -1731,7 +1730,7 @@ static int mouse_select(bContext *C, float co[2], int extend, int loop)
MTexPoly *tf;
MLoopUV *luv;
NearestHit hit;
- int i, select = 1, selectmode, sticky, sync, *hitv = NULL, nvert;
+ int i, select = 1, selectmode, sticky, sync, *hitv = NULL;
BLI_array_declare(hitv);
int flush = 0, hitlen = 0; /* 0 == don't flush, 1 == sel, -1 == desel; only use when selection sync is enabled */
float limit[2], **hituv = NULL;
@@ -1811,16 +1810,12 @@ static int mouse_select(bContext *C, float co[2], int extend, int loop)
/* mark 2 edge vertices as being hit */
BLI_array_growitems(hitv, hit.efa->len);
BLI_array_growitems(hituv, hit.efa->len);
- for (i = 0; i < hit.efa->len; i++) {
- hitv[i] = 0xFFFFFFFF;
- }
-
- nvert = hit.efa->len;
+ fill_vn_i(hitv, hit.efa->len, 0xFFFFFFFF);
hitv[hit.lindex] = hit.vert1;
- hitv[(hit.lindex + 1) % nvert] = hit.vert2;
+ hitv[(hit.lindex + 1) % hit.efa->len] = hit.vert2;
hituv[hit.lindex] = hit.luv->uv;
- hituv[(hit.lindex + 1) % nvert] = hit.nextluv->uv;
+ hituv[(hit.lindex + 1) % hit.efa->len] = hit.nextluv->uv;
hitlen = hit.efa->len;
}
@@ -1878,41 +1873,48 @@ static int mouse_select(bContext *C, float co[2], int extend, int loop)
else if (extend) {
if (selectmode == UV_SELECT_VERTEX) {
/* (de)select uv vertex */
- if (uvedit_uv_selected(em, scene, hit.l)) {
- uvedit_uv_deselect(em, scene, hit.l);
+ if (uvedit_uv_select_test(em, scene, hit.l)) {
+ uvedit_uv_select_disable(em, scene, hit.l);
select = 0;
}
else {
- uvedit_uv_select(em, scene, hit.l);
+ uvedit_uv_select_enable(em, scene, hit.l, TRUE);
select = 1;
}
flush = 1;
}
else if (selectmode == UV_SELECT_EDGE) {
/* (de)select edge */
- if (uvedit_edge_selected(em, scene, hit.l)) {
- uvedit_edge_deselect(em, scene, hit.l);
+ if (uvedit_edge_select_test(em, scene, hit.l)) {
+ uvedit_edge_select_disable(em, scene, hit.l);
select = 0;
}
else {
- uvedit_edge_select(em, scene, hit.l);
+ uvedit_edge_select_enable(em, scene, hit.l, TRUE);
select = 1;
}
flush = 1;
}
else if (selectmode == UV_SELECT_FACE) {
/* (de)select face */
- if (uvedit_face_selected(scene, em, hit.efa)) {
- uvedit_face_deselect(scene, em, hit.efa);
+ if (uvedit_face_select_test(scene, em, hit.efa)) {
+ uvedit_face_select_disable(scene, em, hit.efa);
select = 0;
}
else {
- uvedit_face_select(scene, em, hit.efa);
+ uvedit_face_select_enable(scene, em, hit.efa, TRUE);
select = 1;
}
flush = -1;
}
+ /* de-selecting an edge may deselect a face too - validate */
+ if (sync) {
+ if (select == FALSE) {
+ BM_select_history_validate(em->bm);
+ }
+ }
+
/* (de)select sticky uv nodes */
if (sticky != SI_STICKY_DISABLE) {
@@ -1922,13 +1924,13 @@ static int mouse_select(bContext *C, float co[2], int extend, int loop)
if (select == 0) {
BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
tf = CustomData_bmesh_get(&em->bm->pdata, efa->head.data, CD_MTEXPOLY);
- if (!uvedit_face_visible(scene, ima, efa, tf))
+ if (!uvedit_face_visible_test(scene, ima, efa, tf))
continue;
BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) {
luv = CustomData_bmesh_get(&em->bm->ldata, l->head.data, CD_MLOOPUV);
if (sticky_select(limit, hitv, BM_elem_index_get(l->v), hituv, luv->uv, sticky, hitlen))
- uvedit_uv_deselect(em, scene, l);
+ uvedit_uv_select_disable(em, scene, l);
}
}
flush = -1;
@@ -1937,13 +1939,13 @@ static int mouse_select(bContext *C, float co[2], int extend, int loop)
else {
BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
tf = CustomData_bmesh_get(&em->bm->pdata, efa->head.data, CD_MTEXPOLY);
- if (!uvedit_face_visible(scene, ima, efa, tf))
+ if (!uvedit_face_visible_test(scene, ima, efa, tf))
continue;
BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) {
luv = CustomData_bmesh_get(&em->bm->ldata, l->head.data, CD_MLOOPUV);
if (sticky_select(limit, hitv, BM_elem_index_get(l->v), hituv, luv->uv, sticky, hitlen))
- uvedit_uv_select(em, scene, l);
+ uvedit_uv_select_enable(em, scene, l, FALSE);
}
}
@@ -1953,30 +1955,28 @@ static int mouse_select(bContext *C, float co[2], int extend, int loop)
}
else {
/* deselect all */
- BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
- uvedit_face_deselect(scene, em, efa);
- }
+ select_all_perform(scene, ima, em, SEL_DESELECT);
if (selectmode == UV_SELECT_VERTEX) {
/* select vertex */
- uvedit_uv_select(em, scene, hit.l);
+ uvedit_uv_select_enable(em, scene, hit.l, TRUE);
flush = 1;
}
else if (selectmode == UV_SELECT_EDGE) {
/* select edge */
- uvedit_edge_select(em, scene, hit.l);
+ uvedit_edge_select_enable(em, scene, hit.l, TRUE);
flush = 1;
}
else if (selectmode == UV_SELECT_FACE) {
/* select face */
- uvedit_face_select(scene, em, hit.efa);
+ uvedit_face_select_enable(scene, em, hit.efa, TRUE);
}
/* select sticky uvs */
if (sticky != SI_STICKY_DISABLE) {
BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
tf = CustomData_bmesh_get(&em->bm->pdata, efa->head.data, CD_MTEXPOLY);
- if (!uvedit_face_visible(scene, ima, efa, tf))
+ if (!uvedit_face_visible_test(scene, ima, efa, tf))
continue;
BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) {
@@ -1984,7 +1984,7 @@ static int mouse_select(bContext *C, float co[2], int extend, int loop)
luv = CustomData_bmesh_get(&em->bm->ldata, l->head.data, CD_MLOOPUV);
if (sticky_select(limit, hitv, BM_elem_index_get(l->v), hituv, luv->uv, sticky, hitlen))
- uvedit_uv_select(em, scene, l);
+ uvedit_uv_select_enable(em, scene, l, FALSE);
flush = 1;
}
@@ -1992,19 +1992,32 @@ static int mouse_select(bContext *C, float co[2], int extend, int loop)
}
}
-#if 0 /* BM_elem_select_set API handles all of this? */
-
if (sync) {
/* flush for mesh selection */
+
+ /* before bmesh */
+#if 0
if (ts->selectmode != SCE_SELECT_FACE) {
if (flush == 1) EDBM_select_flush(em);
else if (flush == -1) EDBM_deselect_flush(em);
}
- }
#else
- (void)flush; /* flush is otherwise UNUSED */
- (void)sync; /* sync is otherwise UNUSED */
+ if (flush != 0) {
+ if (loop) {
+ /* push vertex -> edge selection */
+ if (select) {
+ EDBM_select_flush(em);
+ }
+ else {
+ EDBM_deselect_flush(em);
+ }
+ }
+ else {
+ EDBM_selectmode_flush(em);
+ }
+ }
#endif
+ }
DAG_id_tag_update(obedit->data, 0);
WM_event_add_notifier(C, NC_GEOM | ND_SELECT, obedit->data);
@@ -2230,7 +2243,7 @@ static int unlink_selection_exec(bContext *C, wmOperator *op)
int desel = 0;
tf = CustomData_bmesh_get(&em->bm->pdata, efa->head.data, CD_MTEXPOLY);
- if (!uvedit_face_visible(scene, ima, efa, tf))
+ if (!uvedit_face_visible_test(scene, ima, efa, tf))
continue;
BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) {
@@ -2317,9 +2330,9 @@ static void uv_faces_do_sticky(bContext *C, SpaceImage *sima, Scene *scene, Obje
BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) {
if (BM_elem_flag_test(l->v, BM_ELEM_TAG)) {
if (select)
- uvedit_uv_select(em, scene, l);
+ uvedit_uv_select_enable(em, scene, l, FALSE);
else
- uvedit_uv_deselect(em, scene, l);
+ uvedit_uv_select_disable(em, scene, l);
}
}
}
@@ -2351,9 +2364,9 @@ static void uv_faces_do_sticky(bContext *C, SpaceImage *sima, Scene *scene, Obje
BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) {
if (select)
- uvedit_uv_select(em, scene, l);
+ uvedit_uv_select_enable(em, scene, l, FALSE);
else
- uvedit_uv_deselect(em, scene, l);
+ uvedit_uv_select_disable(em, scene, l);
vlist_iter = EDBM_uv_vert_map_at_index(vmap, BM_elem_index_get(l->v));
@@ -2378,9 +2391,9 @@ static void uv_faces_do_sticky(bContext *C, SpaceImage *sima, Scene *scene, Obje
/* tf_vlist = CustomData_bmesh_get(&em->bm->pdata, efa_vlist->head.data, CD_MTEXPOLY); */ /* UNUSED */
if (select)
- uvedit_uv_select(em, scene, BM_iter_at_index(em->bm, BM_LOOPS_OF_FACE, efa_vlist, vlist_iter->tfindex));
+ uvedit_uv_select_enable(em, scene, BM_iter_at_index(em->bm, BM_LOOPS_OF_FACE, efa_vlist, vlist_iter->tfindex), FALSE);
else
- uvedit_uv_deselect(em, scene, BM_iter_at_index(em->bm, BM_LOOPS_OF_FACE, efa_vlist, vlist_iter->tfindex));
+ uvedit_uv_select_disable(em, scene, BM_iter_at_index(em->bm, BM_LOOPS_OF_FACE, efa_vlist, vlist_iter->tfindex));
}
vlist_iter = vlist_iter->next;
}
@@ -2395,9 +2408,9 @@ static void uv_faces_do_sticky(bContext *C, SpaceImage *sima, Scene *scene, Obje
BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
if (BM_elem_flag_test(efa, BM_ELEM_TAG)) {
if (select)
- uvedit_face_select(scene, em, efa);
+ uvedit_face_select_enable(scene, em, efa, FALSE);
else
- uvedit_face_deselect(scene, em, efa);
+ uvedit_face_select_disable(scene, em, efa);
}
}
}
@@ -2436,7 +2449,7 @@ static int border_select_exec(bContext *C, wmOperator *op)
extend = RNA_boolean_get(op->ptr, "extend");
if (!extend)
- select_all_perform(C, SEL_DESELECT);
+ select_all_perform(scene, ima, em, SEL_DESELECT);
if (ts->uv_flag & UV_SYNC_SELECTION)
faces = (ts->selectmode == SCE_SELECT_FACE);
@@ -2455,7 +2468,7 @@ static int border_select_exec(bContext *C, wmOperator *op)
BM_elem_flag_disable(efa, BM_ELEM_TAG);
tf = CustomData_bmesh_get(&em->bm->pdata, efa->head.data, CD_MTEXPOLY);
- if (uvedit_face_visible(scene, ima, efa, tf)) {
+ if (uvedit_face_visible_test(scene, ima, efa, tf)) {
poly_uv_center(em, efa, cent);
if (BLI_in_rctf(&rectf, cent[0], cent[1])) {
BM_elem_flag_enable(efa, BM_ELEM_TAG);
@@ -2474,7 +2487,7 @@ static int border_select_exec(bContext *C, wmOperator *op)
BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
tf = CustomData_bmesh_get(&em->bm->pdata, efa->head.data, CD_MTEXPOLY);
- if (!uvedit_face_visible(scene, ima, efa, tf))
+ if (!uvedit_face_visible_test(scene, ima, efa, tf))
continue;
BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) {
luv = CustomData_bmesh_get(&em->bm->ldata, l->head.data, CD_MLOOPUV);
@@ -2483,15 +2496,15 @@ static int border_select_exec(bContext *C, wmOperator *op)
/* UV_SYNC_SELECTION - can't do pinned selection */
if (BLI_in_rctf(&rectf, luv->uv[0], luv->uv[1])) {
- if (select) uvedit_uv_select(em, scene, l);
- else uvedit_uv_deselect(em, scene, l);
+ if (select) uvedit_uv_select_enable(em, scene, l, FALSE);
+ else uvedit_uv_select_disable(em, scene, l);
}
}
else if (pinned) {
if ((luv->flag & MLOOPUV_PINNED) &&
BLI_in_rctf(&rectf, luv->uv[0], luv->uv[1])) {
- if (select) uvedit_uv_select(em, scene, l);
- else uvedit_uv_deselect(em, scene, l);
+ if (select) uvedit_uv_select_enable(em, scene, l, FALSE);
+ else uvedit_uv_select_disable(em, scene, l);
}
}
}
@@ -2499,15 +2512,20 @@ static int border_select_exec(bContext *C, wmOperator *op)
}
if (change) {
- /* make sure newly selected vert selection is updated*/
-#if 0 /* BM_elem_select_set API handles all of this? */
+ /* bmesh API habdles flushing but not on de-select */
if (ts->uv_flag & UV_SYNC_SELECTION) {
if (ts->selectmode != SCE_SELECT_FACE) {
- if (select) EDBM_select_flush(em);
- else EDBM_deselect_flush(em);
+ if (select == FALSE) {
+ EDBM_deselect_flush(em);
+ }
+ }
+ }
+
+ if (ts->uv_flag & UV_SYNC_SELECTION) {
+ if (select == FALSE) {
+ BM_select_history_validate(em->bm);
}
}
-#endif
WM_event_add_notifier(C, NC_GEOM | ND_SELECT, obedit->data);
@@ -2556,8 +2574,8 @@ static void select_uv_inside_ellipse(BMEditMesh *em, SpaceImage *UNUSED(sima), S
r2 = x * x + y * y;
if (r2 < 1.0f) {
- if (select) uvedit_uv_select(em, scene, l);
- else uvedit_uv_deselect(em, scene, l);
+ if (select) uvedit_uv_select_enable(em, scene, l, FALSE);
+ else uvedit_uv_select_disable(em, scene, l);
}
}
@@ -2715,11 +2733,11 @@ static int snap_uvs_to_cursor(Scene *scene, Image *ima, Object *obedit, SpaceIma
BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
tface = CustomData_bmesh_get(&em->bm->pdata, efa->head.data, CD_MTEXPOLY);
- if (!uvedit_face_visible(scene, ima, efa, tface))
+ if (!uvedit_face_visible_test(scene, ima, efa, tface))
continue;
BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) {
- if (uvedit_uv_selected(em, scene, l)) {
+ if (uvedit_uv_select_test(em, scene, l)) {
luv = CustomData_bmesh_get(&em->bm->ldata, l->head.data, CD_MLOOPUV);
copy_v2_v2(luv->uv, sima->cursor);
change = 1;
@@ -2745,10 +2763,10 @@ static int snap_uvs_to_adjacent_unselected(Scene *scene, Image *ima, Object *obe
* get unique indices and to count how much to malloc */
BM_ITER_MESH (f, &iter, bm, BM_FACES_OF_MESH) {
tface = CustomData_bmesh_get(&bm->pdata, f->head.data, CD_MTEXPOLY);
- if (uvedit_face_visible(scene, ima, f, tface)) {
+ if (uvedit_face_visible_test(scene, ima, f, tface)) {
BM_elem_flag_enable(f, BM_ELEM_TAG);
BM_ITER_ELEM (l, &liter, f, BM_LOOPS_OF_FACE) {
- BM_elem_flag_set(l, BM_ELEM_TAG, uvedit_uv_selected(em, scene, l));
+ BM_elem_flag_set(l, BM_ELEM_TAG, uvedit_uv_select_test(em, scene, l));
}
}
else {
@@ -2806,11 +2824,11 @@ static int snap_uvs_to_pixels(SpaceImage *sima, Scene *scene, Object *obedit)
BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
tface = CustomData_bmesh_get(&em->bm->pdata, efa->head.data, CD_MTEXPOLY);
- if (!uvedit_face_visible(scene, ima, efa, tface))
+ if (!uvedit_face_visible_test(scene, ima, efa, tface))
continue;
BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) {
- if (uvedit_uv_selected(em, scene, l)) {
+ if (uvedit_uv_select_test(em, scene, l)) {
luv = CustomData_bmesh_get(&em->bm->ldata, l->head.data, CD_MLOOPUV);
snap_uv_to_pixel(luv->uv, w, h);
}
@@ -2891,18 +2909,18 @@ static int pin_exec(bContext *C, wmOperator *op)
BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
tface = CustomData_bmesh_get(&em->bm->pdata, efa->head.data, CD_MTEXPOLY);
- if (!uvedit_face_visible(scene, ima, efa, tface))
+ if (!uvedit_face_visible_test(scene, ima, efa, tface))
continue;
BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) {
luv = CustomData_bmesh_get(&em->bm->ldata, l->head.data, CD_MLOOPUV);
if (!clear) {
- if (uvedit_uv_selected(em, scene, l))
+ if (uvedit_uv_select_test(em, scene, l))
luv->flag |= MLOOPUV_PINNED;
}
else {
- if (uvedit_uv_selected(em, scene, l))
+ if (uvedit_uv_select_test(em, scene, l))
luv->flag &= ~MLOOPUV_PINNED;
}
}
@@ -2945,14 +2963,14 @@ static int select_pinned_exec(bContext *C, wmOperator *UNUSED(op))
BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
tface = CustomData_bmesh_get(&em->bm->pdata, efa->head.data, CD_MTEXPOLY);
- if (!uvedit_face_visible(scene, ima, efa, tface))
+ if (!uvedit_face_visible_test(scene, ima, efa, tface))
continue;
BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) {
luv = CustomData_bmesh_get(&em->bm->ldata, l->head.data, CD_MLOOPUV);
if (luv->flag & MLOOPUV_PINNED)
- uvedit_uv_select(em, scene, l);
+ uvedit_uv_select_enable(em, scene, l, FALSE);
}
}
@@ -3025,7 +3043,7 @@ static int hide_exec(bContext *C, wmOperator *op)
tf = CustomData_bmesh_get(&em->bm->pdata, efa->head.data, CD_MTEXPOLY);
- if (!uvedit_face_visible(scene, ima, efa, tf)) {
+ if (!uvedit_face_visible_test(scene, ima, efa, tf)) {
continue;
}
@@ -3047,7 +3065,7 @@ static int hide_exec(bContext *C, wmOperator *op)
if (bm_face_is_all_uv_sel(em->bm, efa, TRUE) == !swap) {
BM_face_select_set(em->bm, efa, FALSE);
}
- uvedit_face_deselect(scene, em, efa);
+ uvedit_face_select_disable(scene, em, efa);
}
else {
if (bm_face_is_all_uv_sel(em->bm, efa, TRUE) == !swap) {
@@ -3058,7 +3076,7 @@ static int hide_exec(bContext *C, wmOperator *op)
}
}
}
- if (!swap) uvedit_face_deselect(scene, em, efa);
+ if (!swap) uvedit_face_select_disable(scene, em, efa);
}
@@ -3067,7 +3085,7 @@ static int hide_exec(bContext *C, wmOperator *op)
/* check if a UV is de-selected */
if (bm_face_is_all_uv_sel(em->bm, efa, FALSE) != !swap) {
BM_face_select_set(em->bm, efa, FALSE);
- uvedit_face_deselect(scene, em, efa);
+ uvedit_face_select_disable(scene, em, efa);
}
}
else {
@@ -3086,7 +3104,7 @@ static int hide_exec(bContext *C, wmOperator *op)
if (em->selectmode != SCE_SELECT_FACE)
EDBM_selectmode_flush_ex(em, SCE_SELECT_VERTEX | SCE_SELECT_EDGE);
- EDBM_editselection_validate(em);
+ BM_select_history_validate(em->bm);
WM_event_add_notifier(C, NC_GEOM | ND_SELECT, obedit->data);
return OPERATOR_FINISHED;
@@ -3498,7 +3516,7 @@ static int mark_seam_exec(bContext *C, wmOperator *UNUSED(op))
BM_ITER_MESH (efa, &iter, bm, BM_FACES_OF_MESH) {
BM_ITER_ELEM (loop, &liter, efa, BM_LOOPS_OF_FACE) {
- if (uvedit_edge_selected(em, scene, loop)) {
+ if (uvedit_edge_select_test(em, scene, loop)) {
BM_elem_flag_enable(loop->e, BM_ELEM_SEAM);
}
}