Commit: af92f3d325178049de55331258bb341b05c2f4a7
Author: Campbell Barton
Date:   Tue Dec 2 17:56:40 2014 +0100
Branches: master
https://developer.blender.org/rBaf92f3d325178049de55331258bb341b05c2f4a7

Tex Paint: hide selected face-mask edges

Internal selected edges were distracting when painting images.

Also remove unused flag.

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

M       source/blender/editors/space_view3d/drawmesh.c
M       source/blender/editors/space_view3d/drawobject.c
M       source/blender/editors/space_view3d/view3d_intern.h
M       source/blender/makesdna/DNA_mesh_types.h

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

diff --git a/source/blender/editors/space_view3d/drawmesh.c 
b/source/blender/editors/space_view3d/drawmesh.c
index d5275adf..755c633 100644
--- a/source/blender/editors/space_view3d/drawmesh.c
+++ b/source/blender/editors/space_view3d/drawmesh.c
@@ -96,7 +96,7 @@ typedef struct drawTFace_userData {
 BLI_INLINE int edge_vis_index(const int index) { return index * 2; }
 BLI_INLINE int edge_sel_index(const int index) { return index * 2 + 1; }
 
-static BLI_bitmap *get_tface_mesh_marked_edge_info(Mesh *me)
+static BLI_bitmap *get_tface_mesh_marked_edge_info(Mesh *me, bool 
draw_select_edges)
 {
        BLI_bitmap *bitmap_edge_flags = BLI_BITMAP_NEW(me->totedge * 2, 
__func__);
        MPoly *mp;
@@ -112,8 +112,17 @@ static BLI_bitmap *get_tface_mesh_marked_edge_info(Mesh 
*me)
 
                        ml = me->mloop + mp->loopstart;
                        for (j = 0; j < mp->totloop; j++, ml++) {
-                               BLI_BITMAP_ENABLE(bitmap_edge_flags, 
edge_vis_index(ml->e));
-                               if (select_set) 
BLI_BITMAP_ENABLE(bitmap_edge_flags, edge_sel_index(ml->e));
+                               if ((draw_select_edges == false) &&
+                                   (select_set && 
BLI_BITMAP_TEST(bitmap_edge_flags, edge_sel_index(ml->e))))
+                               {
+                                       BLI_BITMAP_DISABLE(bitmap_edge_flags, 
edge_vis_index(ml->e));
+                               }
+                               else {
+                                       BLI_BITMAP_ENABLE(bitmap_edge_flags, 
edge_vis_index(ml->e));
+                                       if (select_set) {
+                                               
BLI_BITMAP_ENABLE(bitmap_edge_flags, edge_sel_index(ml->e));
+                                       }
+                               }
                        }
                }
        }
@@ -128,21 +137,26 @@ static DMDrawOption 
draw_mesh_face_select__setHiddenOpts(void *userData, int ind
        Mesh *me = data->me;
 
        if (me->drawflag & ME_DRAWEDGES) {
-               if ((me->drawflag & ME_HIDDENEDGES) || 
(BLI_BITMAP_TEST(data->edge_flags, edge_vis_index(index))))
+               if ((BLI_BITMAP_TEST(data->edge_flags, edge_vis_index(index))))
                        return DM_DRAW_OPTION_NORMAL;
                else
                        return DM_DRAW_OPTION_SKIP;
        }
-       else if (BLI_BITMAP_TEST(data->edge_flags, edge_sel_index(index)))
+       else if (BLI_BITMAP_TEST(data->edge_flags, edge_sel_index(index)) &&
+                BLI_BITMAP_TEST(data->edge_flags, edge_vis_index(index)))
+       {
                return DM_DRAW_OPTION_NORMAL;
-       else
+       }
+       else {
                return DM_DRAW_OPTION_SKIP;
+       }
 }
 
 static DMDrawOption draw_mesh_face_select__setSelectOpts(void *userData, int 
index)
 {
        drawMeshFaceSelect_userData *data = userData;
-       return (BLI_BITMAP_TEST(data->edge_flags, edge_sel_index(index))) ? 
DM_DRAW_OPTION_NORMAL : DM_DRAW_OPTION_SKIP;
+       return (BLI_BITMAP_TEST(data->edge_flags, edge_sel_index(index)) &&
+               BLI_BITMAP_TEST(data->edge_flags, edge_vis_index(index))) ? 
DM_DRAW_OPTION_NORMAL : DM_DRAW_OPTION_SKIP;
 }
 
 /* draws unselected */
@@ -157,12 +171,12 @@ static DMDrawOption 
draw_mesh_face_select__drawFaceOptsInv(void *userData, int i
                return DM_DRAW_OPTION_SKIP;
 }
 
-void draw_mesh_face_select(RegionView3D *rv3d, Mesh *me, DerivedMesh *dm)
+void draw_mesh_face_select(RegionView3D *rv3d, Mesh *me, DerivedMesh *dm, bool 
draw_select_edges)
 {
        drawMeshFaceSelect_userData data;
 
        data.me = me;
-       data.edge_flags = get_tface_mesh_marked_edge_info(me);
+       data.edge_flags = get_tface_mesh_marked_edge_info(me, 
draw_select_edges);
 
        glEnable(GL_DEPTH_TEST);
        glDisable(GL_LIGHTING);
@@ -939,8 +953,10 @@ static void draw_mesh_textured_old(Scene *scene, View3D 
*v3d, RegionView3D *rv3d
        draw_textured_end();
        
        /* draw edges and selected faces over textured mesh */
-       if (!(ob == scene->obedit) && (draw_flags & DRAW_FACE_SELECT))
-               draw_mesh_face_select(rv3d, me, dm);
+       if (!(ob == scene->obedit) && (draw_flags & DRAW_FACE_SELECT)) {
+               bool draw_select_edges = (ob->mode & OB_MODE_TEXTURE_PAINT) == 
0;
+               draw_mesh_face_select(rv3d, me, dm, draw_select_edges);
+       }
 
        /* reset from negative scale correction */
        glFrontFace(GL_CCW);
@@ -1136,8 +1152,10 @@ void draw_mesh_textured(Scene *scene, View3D *v3d, 
RegionView3D *rv3d,
        glMatrixMode(GL_MODELVIEW);
 
        /* faceselect mode drawing over textured mesh */
-       if (!(ob == scene->obedit) && (draw_flags & DRAW_FACE_SELECT))
-               draw_mesh_face_select(rv3d, ob->data, dm);
+       if (!(ob == scene->obedit) && (draw_flags & DRAW_FACE_SELECT)) {
+               bool draw_select_edges = (ob->mode & OB_MODE_TEXTURE_PAINT) == 
0;
+               draw_mesh_face_select(rv3d, ob->data, dm, draw_select_edges);
+       }
 }
 
 /* Vertex Paint and Weight Paint */
@@ -1261,7 +1279,8 @@ void draw_mesh_paint(View3D *v3d, RegionView3D *rv3d,
 
        /* draw face selection on top */
        if (draw_flags & DRAW_FACE_SELECT) {
-               draw_mesh_face_select(rv3d, me, dm);
+               bool draw_select_edges = (ob->mode & OB_MODE_TEXTURE_PAINT) == 
0;
+               draw_mesh_face_select(rv3d, me, dm, draw_select_edges);
        }
        else if ((use_light == false) || (ob->dtx & OB_DRAWWIRE)) {
                const bool use_depth = (v3d->flag & V3D_ZBUF_SELECT) || 
!(ob->mode & OB_MODE_WEIGHT_PAINT);
diff --git a/source/blender/editors/space_view3d/drawobject.c 
b/source/blender/editors/space_view3d/drawobject.c
index 85cb485..79d660f 100644
--- a/source/blender/editors/space_view3d/drawobject.c
+++ b/source/blender/editors/space_view3d/drawobject.c
@@ -3771,7 +3771,7 @@ static void draw_mesh_fancy(Scene *scene, ARegion *ar, 
View3D *v3d, RegionView3D
                        glFrontFace(GL_CCW);
 
                        if (draw_flags & DRAW_FACE_SELECT)
-                               draw_mesh_face_select(rv3d, me, dm);
+                               draw_mesh_face_select(rv3d, me, dm, false);
                }
                else {
                        draw_mesh_textured(scene, v3d, rv3d, ob, dm, 
draw_flags);
diff --git a/source/blender/editors/space_view3d/view3d_intern.h 
b/source/blender/editors/space_view3d/view3d_intern.h
index 84ac4f7..d3a9f5c 100644
--- a/source/blender/editors/space_view3d/view3d_intern.h
+++ b/source/blender/editors/space_view3d/view3d_intern.h
@@ -163,7 +163,9 @@ bool draw_armature(Scene *scene, View3D *v3d, ARegion *ar, 
Base *base,
 /* drawmesh.c */
 void draw_mesh_textured(Scene *scene, View3D *v3d, RegionView3D *rv3d,
                         struct Object *ob, struct DerivedMesh *dm, const int 
draw_flags);
-void draw_mesh_face_select(struct RegionView3D *rv3d, struct Mesh *me, struct 
DerivedMesh *dm);
+void draw_mesh_face_select(
+        struct RegionView3D *rv3d, struct Mesh *me, struct DerivedMesh *dm,
+        bool draw_select_edges);
 void draw_mesh_paint_weight_faces(struct DerivedMesh *dm, const bool do_light,
                                   void *facemask_cb, void *user_data);
 void draw_mesh_paint_vcolor_faces(struct DerivedMesh *dm, const bool use_light,
diff --git a/source/blender/makesdna/DNA_mesh_types.h 
b/source/blender/makesdna/DNA_mesh_types.h
index 688e17e..8067fa5 100644
--- a/source/blender/makesdna/DNA_mesh_types.h
+++ b/source/blender/makesdna/DNA_mesh_types.h
@@ -201,7 +201,7 @@ enum {
        ME_DRAW_VNORMALS       = 1 << 3,
 
        ME_DRAWEIGHT           = 1 << 4,
-       ME_HIDDENEDGES         = 1 << 5,
+       /* ME_HIDDENEDGES      = 1 << 5, */  /* DEPRECATED */
 
        ME_DRAWCREASES         = 1 << 6,
        ME_DRAWSEAMS           = 1 << 7,

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to