added the option to draw sharp edges.
authorCampbell Barton <ideasman42@gmail.com>
Thu, 31 Aug 2006 06:03:24 +0000 (06:03 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Thu, 31 Aug 2006 06:03:24 +0000 (06:03 +0000)
had to make some room in the "Mesh Tools 1" panel,
removed "Center" - its alredy in the "Mesh Tools" panel, and grouped the "Normal" draw buttons.
At the moment mixing modes dosnt work, we will need to review this to see if its worth attempting.

source/blender/blenkernel/BKE_global.h
source/blender/src/buttons_editing.c
source/blender/src/drawobject.c

index 8f6aa8c3f54b38226994888338ea84b5f7b7c2a5..0c20b545f1e9356332823439aaaff9f948377295 100644 (file)
@@ -176,6 +176,7 @@ typedef struct Global {
 #define G_DRAWCREASES  (1 << 19)
 #define G_DRAWSEAMS     (1 << 20)
 #define G_HIDDENEDGES   (1 << 21)
+#define G_DRAWSHARP            (1 << 28) /* draw edges with the sharp flag */
 
 /* Measurement info Drawing */
 #define G_DRAW_EDGELEN  (1 << 22) 
index d64f9f96fba819d0ce91f4f3a36b577504dc73dc..0f11953b502bfc1aff09c7938aecc07e248c7e40 100644 (file)
@@ -3665,35 +3665,41 @@ static void editing_panel_mesh_tools1(Object *ob, Mesh *me)
        if(uiNewPanel(curarea, block, "Mesh Tools 1", "Editing", 960, 0, 318, 204)==0) return;
 
        uiBlockBeginAlign(block);
-       uiDefBut(block, BUT,B_DOCENTRE, "Centre",       955, 200, 160, 19, 0, 0, 0, 0, 0, "Shifts object data to be centered about object's origin");
-       uiDefBut(block, BUT,B_HIDE,             "Hide",         1115, 200,  160, 19, 0, 0, 0, 0, 0, "Hides selected faces");
-       uiDefBut(block, BUT,B_SELSWAP,  "Select Swap",  955, 180, 160, 19, 0, 0, 0, 0, 0, "Selects unselected faces, and deselects selected faces");
-       uiDefBut(block, BUT,B_REVEAL,   "Reveal",               1115, 180,  160, 19, 0, 0, 0, 0, 0, "Reveals selected faces");
+       uiDefBut(block, BUT,B_SELSWAP,  "Select Swap",  955, 200,  106, 19, 0, 0, 0, 0, 0, "Selects unselected faces, and deselects selected faces");
+       uiDefBut(block, BUT,B_HIDE,             "Hide",         1061, 200, 106, 19, 0, 0, 0, 0, 0, "Hides selected faces");
+       uiDefBut(block, BUT,B_REVEAL,   "Reveal",               1167, 200,  107, 19, 0, 0, 0, 0, 0, "Reveals selected faces");
        uiBlockEndAlign(block);
 
        uiBlockBeginAlign(block);
-       uiDefButF(block, NUM,             REDRAWVIEW3D, "NSize:",       955, 131, 150, 19, &G.scene->editbutsize, 0.001, 2.0, 10, 0, "Sets the length to use when displaying face normals");
-       uiDefButBitI(block, TOG, G_DRAWNORMALS, REDRAWVIEW3D, "Draw Normals",   955,110,150,19, &G.f, 0, 0, 0, 0, "Displays face normals as lines");
+       uiDefButF(block, NUM,                                   REDRAWVIEW3D, "NSize:", 955, 170, 150, 19, &G.scene->editbutsize, 0.001, 2.0, 10, 0, "Sets the length to use when displaying face normals");
+       uiDefButBitI(block, TOG, G_DRAWNORMALS, REDRAWVIEW3D, "Draw Normals",   955,148,150,19, &G.f, 0, 0, 0, 0, "Displays face normals as lines");
+       uiDefButBitI(block, TOG, G_DRAW_VNORMALS, REDRAWVIEW3D, "Draw VNormals",955,126,150,19, &G.f, 0, 0, 0, 0, "Displays vertex normals as lines");
+       uiBlockEndAlign(block);
+       
+       uiBlockBeginAlign(block);
        uiDefButBitI(block, TOG, G_DRAWFACES, REDRAWVIEW3D, "Draw Faces",               955,88,150,19, &G.f, 0, 0, 0, 0, "Displays all faces as shades");
        uiDefButBitI(block, TOG, G_DRAWEDGES, REDRAWVIEW3D, "Draw Edges",       955,66,150,19, &G.f, 0, 0, 0, 0, "Displays selected edges using hilights");
        uiDefButBitI(block, TOG, G_DRAWCREASES, REDRAWVIEW3D, "Draw Creases",   955,44,150,19, &G.f, 0, 0, 0, 0, "Displays creases created for subsurf weighting");
        uiDefButBitI(block, TOG, G_DRAWSEAMS, REDRAWVIEW3D, "Draw Seams",       955,22,150,19, &G.f, 0, 0, 0, 0, "Displays UV unwrapping seams");
-       uiDefButBitI(block, TOG, G_ALLEDGES, 0, "All Edges",                    955, 0,150,19, &G.f, 0, 0, 0, 0, "Displays all edges in object mode without optimization");
+       uiDefButBitI(block, TOG, G_DRAWSHARP, REDRAWVIEW3D, "Draw Sharp",       955,0,150,19, &G.f, 0, 0, 0, 0, "Displays sharp edges, used with the EdgeSplit modifier");
        uiBlockEndAlign(block);
        
        /* Measurement drawing options */
        uiBlockBeginAlign(block);
+       uiDefButBitI(block, TOG, G_DRAW_EDGELEN, REDRAWVIEW3D, "Edge Length",   1125,170,150,19, &G.f, 0, 0, 0, 0, "Displays selected edge lengths");
+       uiDefButBitI(block, TOG, G_DRAW_EDGEANG, REDRAWVIEW3D, "Edge Angles",   1125,148,150,19,  &G.f, 0, 0, 0, 0, "Displays the angles in the selected edges in degrees");
+       uiDefButBitI(block, TOG, G_DRAW_FACEAREA, REDRAWVIEW3D, "Face Area",    1125,126,150,19, &G.f, 0, 0, 0, 0, "Displays the area of selected faces");
 #ifdef WITH_VERSE
        if(G.editMesh->vnode)
-               uiDefButBitI(block, TOG, G_DRAW_VERSE_DEBUG, REDRAWVIEW3D, "Draw VDebug",1125,132,150,19, &G.f, 0, 0, 0, 0, "Displays verse debug information");
+               uiDefButBitI(block, TOG, G_DRAW_VERSE_DEBUG, REDRAWVIEW3D, "Draw VDebug",1125,104,150,19, &G.f, 0, 0, 0, 0, "Displays verse debug information");
 #endif
-       uiDefButBitI(block, TOG, G_DRAW_VNORMALS, REDRAWVIEW3D, "Draw VNormals",1125,110,150,19, &G.f, 0, 0, 0, 0, "Displays vertex normals as lines");
-       uiDefButBitI(block, TOG, G_DRAW_EDGELEN, REDRAWVIEW3D, "Edge Length",   1125,88,150,19, &G.f, 0, 0, 0, 0, "Displays selected edge lengths");
-       uiDefButBitI(block, TOG, G_DRAW_EDGEANG, REDRAWVIEW3D, "Edge Angles",   1125,66,150,19,  &G.f, 0, 0, 0, 0, "Displays the angles in the selected edges in degrees");
-       uiDefButBitI(block, TOG, G_DRAW_FACEAREA, REDRAWVIEW3D, "Face Area",    1125,44,150,19, &G.f, 0, 0, 0, 0, "Displays the area of selected faces");
+       
        uiBlockEndAlign(block);
-
+       
+       uiBlockBeginAlign(block);
+       uiDefButBitI(block, TOG, G_ALLEDGES, 0, "All Edges",                    1125, 22,150,19, &G.f, 0, 0, 0, 0, "Displays all edges in object mode without optimization");
        uiDefButBitS(block, TOG, B_MESH_X_MIRROR, B_DIFF, "X-axis mirror",1125,0,150,19, &G.scene->toolsettings->editbutflag, 0, 0, 0, 0, "While using transforms, mirrors the transformation");
+       uiBlockEndAlign(block);
 }
 
 char *get_vertexgroup_menustr(Object *ob)
index 7149441093a80583167ae0a387bca42a501420b6..878aa0ad50ea6de20d41da42822df11dddd3263c 100644 (file)
@@ -1362,6 +1362,19 @@ static void draw_dm_edges_seams(DerivedMesh *dm)
        dm->drawMappedEdges(dm, draw_dm_edges_seams__setDrawOptions, NULL);
 }
 
+       /* Draw only sharp edges */
+static int draw_dm_edges_sharp__setDrawOptions(void *userData, int index)
+{
+       EditEdge *eed = EM_get_edge_for_index(index);
+
+       return (eed->h==0 && eed->sharp);
+}
+static void draw_dm_edges_sharp(DerivedMesh *dm)
+{
+       dm->drawMappedEdges(dm, draw_dm_edges_sharp__setDrawOptions, NULL);
+}
+
+
        /* Draw faces with color set based on selection */
 static int draw_dm_faces_sel__setDrawOptions(void *userData, int index, int *drawSmooth_r)
 {
@@ -1811,6 +1824,16 @@ static void draw_em_fancy(Object *ob, EditMesh *em, DerivedMesh *cageDM, Derived
                glColor3ub(0,0,0);
                glLineWidth(1);
        }
+       
+       if(G.f & G_DRAWSHARP) {
+               glColor3ub(255, 32, 32); /* todo, make theme-able */
+               glLineWidth(2);
+
+               draw_dm_edges_sharp(cageDM);
+
+               glColor3ub(0,0,0);
+               glLineWidth(1);
+       }
 
        if(G.f & G_DRAWCREASES) {
                draw_dm_creases(cageDM);