Commit: 2c6d079a903ff16e2ae7e50082ef08c081cd29bf
Author: Campbell Barton
Date:   Tue Feb 13 18:29:49 2018 +1100
Branches: blender2.8
https://developer.blender.org/rB2c6d079a903ff16e2ae7e50082ef08c081cd29bf

Object Mode: pass edit-object to UV API

===================================================================

M       source/blender/editors/include/ED_uvedit.h
M       source/blender/editors/sculpt_paint/sculpt_uv.c
M       source/blender/editors/transform/transform_conversions.c
M       source/blender/editors/transform/transform_manipulator2d.c
M       source/blender/editors/uvedit/uvedit_buttons.c
M       source/blender/editors/uvedit/uvedit_draw.c
M       source/blender/editors/uvedit/uvedit_intern.h
M       source/blender/editors/uvedit/uvedit_ops.c
M       source/blender/editors/uvedit/uvedit_smart_stitch.c

===================================================================

diff --git a/source/blender/editors/include/ED_uvedit.h 
b/source/blender/editors/include/ED_uvedit.h
index d4c38688335..e25c34ddb78 100644
--- a/source/blender/editors/include/ED_uvedit.h
+++ b/source/blender/editors/include/ED_uvedit.h
@@ -62,7 +62,7 @@ void ED_object_assign_active_image(struct Main *bmain, struct 
Object *ob, int ma
 bool ED_uvedit_test(struct Object *obedit);
 
 /* visibility and selection */
-bool uvedit_face_visible_test(struct Scene *scene, struct Image *ima, struct 
BMFace *efa);
+bool uvedit_face_visible_test(struct Scene *scene, struct Object *obedit, 
struct Image *ima, struct BMFace *efa);
 bool uvedit_face_select_test(struct Scene *scene, struct BMFace *efa,
                              const int cd_loop_uv_offset);
 bool uvedit_edge_select_test(struct Scene *scene, struct BMLoop *l,
diff --git a/source/blender/editors/sculpt_paint/sculpt_uv.c 
b/source/blender/editors/sculpt_paint/sculpt_uv.c
index c9453f94e61..c736f70f9fa 100644
--- a/source/blender/editors/sculpt_paint/sculpt_uv.c
+++ b/source/blender/editors/sculpt_paint/sculpt_uv.c
@@ -652,7 +652,7 @@ static UvSculptData *uv_sculpt_stroke_init(bContext *C, 
wmOperator *op, const wm
                        UvElement *element;
                        NearestHit hit;
                        Image *ima = CTX_data_edit_image(C);
-                       uv_find_nearest_vert(scene, ima, em, co, NULL, &hit);
+                       uv_find_nearest_vert(scene, ima, obedit, em, co, NULL, 
&hit);
 
                        element = BM_uv_element_get(data->elementMap, hit.efa, 
hit.l);
                        island_index = element->island;
diff --git a/source/blender/editors/transform/transform_conversions.c 
b/source/blender/editors/transform/transform_conversions.c
index 63df39c7d6e..96970fa8a0f 100644
--- a/source/blender/editors/transform/transform_conversions.c
+++ b/source/blender/editors/transform/transform_conversions.c
@@ -2969,7 +2969,7 @@ static void createTransUVs(bContext *C, TransInfo *t)
        BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
                BMLoop *l;
 
-               if (!uvedit_face_visible_test(scene, ima, efa)) {
+               if (!uvedit_face_visible_test(scene, t->obedit, ima, efa)) {
                        BM_elem_flag_disable(efa, BM_ELEM_TAG);
                        continue;
                }
diff --git a/source/blender/editors/transform/transform_manipulator2d.c 
b/source/blender/editors/transform/transform_manipulator2d.c
index 6e2d0d8c5c0..9b6dd187c15 100644
--- a/source/blender/editors/transform/transform_manipulator2d.c
+++ b/source/blender/editors/transform/transform_manipulator2d.c
@@ -368,7 +368,7 @@ bool ED_widgetgroup_manipulator2d_poll(const bContext *C, 
wmManipulatorGroupType
 
                /* check if there's a selected poly */
                BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
-                       if (!uvedit_face_visible_test(scene, ima, efa))
+                       if (!uvedit_face_visible_test(scene, obedit, ima, efa))
                                continue;
 
                        BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) {
diff --git a/source/blender/editors/uvedit/uvedit_buttons.c 
b/source/blender/editors/uvedit/uvedit_buttons.c
index 6b4dd0f0210..f037783bd5e 100644
--- a/source/blender/editors/uvedit/uvedit_buttons.c
+++ b/source/blender/editors/uvedit/uvedit_buttons.c
@@ -61,7 +61,7 @@
 
 /* UV Utilities */
 
-static int uvedit_center(Scene *scene, BMEditMesh *em, Image *ima, float 
center[2])
+static int uvedit_center(Scene *scene, Object *obedit, BMEditMesh *em, Image 
*ima, float center[2])
 {
        BMFace *f;
        BMLoop *l;
@@ -73,7 +73,7 @@ static int uvedit_center(Scene *scene, BMEditMesh *em, Image 
*ima, float center[
        
        zero_v2(center);
        BM_ITER_MESH (f, &iter, em->bm, BM_FACES_OF_MESH) {
-               if (!uvedit_face_visible_test(scene, ima, f))
+               if (!uvedit_face_visible_test(scene, obedit, ima, f))
                        continue;
 
                BM_ITER_ELEM (l, &liter, f, BM_LOOPS_OF_FACE) {
@@ -93,7 +93,7 @@ static int uvedit_center(Scene *scene, BMEditMesh *em, Image 
*ima, float center[
        return tot;
 }
 
-static void uvedit_translate(Scene *scene, BMEditMesh *em, Image *ima, float 
delta[2])
+static void uvedit_translate(Scene *scene, Object *obedit, BMEditMesh *em, 
Image *ima, float delta[2])
 {
        BMFace *f;
        BMLoop *l;
@@ -103,7 +103,7 @@ static void uvedit_translate(Scene *scene, BMEditMesh *em, 
Image *ima, float del
        const int cd_loop_uv_offset = CustomData_get_offset(&em->bm->ldata, 
CD_MLOOPUV);
        
        BM_ITER_MESH (f, &iter, em->bm, BM_FACES_OF_MESH) {
-               if (!uvedit_face_visible_test(scene, ima, f))
+               if (!uvedit_face_visible_test(scene, obedit, ima, f))
                        continue;
 
                BM_ITER_ELEM (l, &liter, f, BM_LOOPS_OF_FACE) {
@@ -134,7 +134,7 @@ static void uvedit_vertex_buttons(const bContext *C, 
uiBlock *block)
        
        em = BKE_editmesh_from_object(obedit);
 
-       if (uvedit_center(scene, em, ima, center)) {
+       if (uvedit_center(scene, obedit, em, ima, center)) {
                float range_xy[2][2] = {
                    {-10.0f, 10.0f},
                    {-10.0f, 10.0f},
@@ -190,7 +190,7 @@ static void do_uvedit_vertex(bContext *C, void 
*UNUSED(arg), int event)
        em = BKE_editmesh_from_object(obedit);
 
        ED_space_image_get_size(sima, &imx, &imy);
-       uvedit_center(scene, em, ima, center);
+       uvedit_center(scene, obedit, em, ima, center);
 
        if (sima->flag & SI_COORDFLOATS) {
                delta[0] = uvedit_old_center[0] - center[0];
@@ -201,7 +201,7 @@ static void do_uvedit_vertex(bContext *C, void 
*UNUSED(arg), int event)
                delta[1] = uvedit_old_center[1] / imy - center[1];
        }
 
-       uvedit_translate(scene, em, ima, delta);
+       uvedit_translate(scene, obedit, em, ima, delta);
 
        WM_event_add_notifier(C, NC_IMAGE, sima->image);
 }
diff --git a/source/blender/editors/uvedit/uvedit_draw.c 
b/source/blender/editors/uvedit/uvedit_draw.c
index 6a8d13574f3..c375cd2e622 100644
--- a/source/blender/editors/uvedit/uvedit_draw.c
+++ b/source/blender/editors/uvedit/uvedit_draw.c
@@ -179,7 +179,7 @@ static void draw_uvs_shadow(Object *obedit)
        immUnbindProgram();
 }
 
-static void draw_uvs_stretch(SpaceImage *sima, Scene *scene, BMEditMesh *em, 
const BMFace *efa_act)
+static void draw_uvs_stretch(SpaceImage *sima, Scene *scene, Object *obedit, 
BMEditMesh *em, const BMFace *efa_act)
 {
        BMesh *bm = em->bm;
        BMFace *efa;
@@ -217,7 +217,7 @@ static void draw_uvs_stretch(SpaceImage *sima, Scene 
*scene, BMEditMesh *em, con
                                totarea += BM_face_calc_area(efa);
                                totuvarea += area_poly_v2(tf_uv, efa->len);
                                
-                               if (uvedit_face_visible_test(scene, ima, efa)) {
+                               if (uvedit_face_visible_test(scene, obedit, 
ima, efa)) {
                                        BM_elem_flag_enable(efa, BM_ELEM_TAG);
                                }
                                else {
@@ -314,7 +314,7 @@ static void draw_uvs_stretch(SpaceImage *sima, Scene 
*scene, BMEditMesh *em, con
                        immBindBuiltinProgram(GPU_SHADER_2D_SMOOTH_COLOR);
 
                        BM_ITER_MESH (efa, &iter, bm, BM_FACES_OF_MESH) {
-                               if (uvedit_face_visible_test(scene, ima, efa)) {
+                               if (uvedit_face_visible_test(scene, obedit, 
ima, efa)) {
                                        const int efa_len = efa->len;
                                        float (*tf_uv)[2]     = (float 
(*)[2])BLI_buffer_reinit_data(&tf_uv_buf,     vec2f, efa_len);
                                        float (*tf_uvorig)[2] = (float 
(*)[2])BLI_buffer_reinit_data(&tf_uvorig_buf, vec2f, efa_len);
@@ -669,12 +669,12 @@ static void draw_uvs(SpaceImage *sima, Scene *scene, 
ViewLayer *view_layer, Obje
        /* 2. draw colored faces */
        
        if (sima->flag & SI_DRAW_STRETCH) {
-               draw_uvs_stretch(sima, scene, em, efa_act);
+               draw_uvs_stretch(sima, scene, obedit, em, efa_act);
        }
        else {
                unsigned int tri_count = 0;
                BM_ITER_MESH(efa, &iter, bm, BM_FACES_OF_MESH) {
-                       if (uvedit_face_visible_test(scene, ima, efa)) {
+                       if (uvedit_face_visible_test(scene, obedit, ima, efa)) {
                                BM_elem_flag_enable(efa, BM_ELEM_TAG);
                                tri_count += efa->len - 2;
                        }
@@ -722,7 +722,7 @@ static void draw_uvs(SpaceImage *sima, Scene *scene, 
ViewLayer *view_layer, Obje
                        glDisable(GL_BLEND);
                }
                else {
-                       if (efa_act && !uvedit_face_visible_test(scene, ima, 
efa_act)) {
+                       if (efa_act && !uvedit_face_visible_test(scene, obedit, 
ima, efa_act)) {
                                efa_act = NULL;
                        }
                }
diff --git a/source/blender/editors/uvedit/uvedit_intern.h 
b/source/blender/editors/uvedit/uvedit_intern.h
index 6ca46941404..eb92f17544f 100644
--- a/source/blender/editors/uvedit/uvedit_intern.h
+++ b/source/blender/editors/uvedit/uvedit_intern.h
@@ -57,10 +57,12 @@ typedef struct NearestHit {
        int lindex;  /* index of loop within face */
 } NearestHit;
 
-void uv_find_nearest_vert(struct Scene *scene, struct Image *ima, struct 
BMEditMesh *em,
-                          const float co[2], const float penalty[2], struct 
NearestHit *hit);
-void uv_find_nearest_edge(struct Scene *scene, struct Image *ima, struct 
BMEditMesh *em,
-                          const float co[2], struct NearestHit *hit);
+void uv_find_nearest_vert(
+        struct Scene *scene, struct Image *ima, struct Object *obedit, struct 
BMEditMesh *em,
+        const float co[2], const float penalty[2], struct NearestHit *hit);
+void uv_find_nearest_edge(
+        struct Scene *scene, struct Image *ima, struct Object *obedit, struct 
BMEditMesh *em,
+        const float co[2], struct NearestHit *hit);
 
 /* utility tool functions */
 
diff --git a/source/blender/editors/uvedit/uvedit_ops.c 
b/source/blender/editors/uvedit/uvedit_ops.c
index 479b43d50f0..63f82c2b422 100644
--- a/source/blender/editors/uvedit/uvedit_ops.c
+++ b/source/blender/editors/uvedit/uvedit_ops.c
@@ -89,7 +89,7 @@
 
 #include "uvedit_intern.h"
 
-static void uv_select_all_perform(Scene *scene, Image *ima, BMEditMesh *em, 
int action);
+static void uv_select_all_perform(Scene *scene, Image *ima, Object *obedit, 
BMEditMesh *em, int action);
 static void uv_select_flush_from_tag_face(SpaceImage *sima, Scene *scene, 
Object *obedit, const bool select);
 static void uv_select_flush_from_tag_loop(SpaceImage *sima, Scene *scene, 
Object *obedit, const bool select);
 
@@ -230,7 +230,7 @@ void ED_uvedit_assign_image(Main *UNUSED(bmain), Scene 
*scene, Object *obedit, I
 
                /* now assign to all visible faces */
                BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
-                       if (uvedit_face_visible_test(scene, previma, efa) &&
+                       if (uvedit_face_visible_test(scene, obedit, previma, 
efa) &&
                            (selected == true || uvedit_face_select_test(scene, 
efa, cd_loop_uv_offset)))
                        {
 #ifdef USE_SWITCH_ASPECT
@@ -296,12 +296,12 @@ bool 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_SEL

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to