Merged changes in the trunk up to revision 52690.
[blender.git] / source / blender / editors / mesh / editmesh_select.c
index c159b50b0778acf8d47f71feb26d06030ede3625..cb1b4ebba7228d93928dcbdcabc8847726dc2d0d 100644 (file)
@@ -695,6 +695,7 @@ static EnumPropertyItem prop_similar_types[] = {
        {SIMEDGE_BEVEL, "BEVEL", 0, "Bevel", ""},
        {SIMEDGE_SEAM, "SEAM", 0, "Seam", ""},
        {SIMEDGE_SHARP, "SHARP", 0, "Sharpness", ""},
+       {SIMEDGE_FREESTYLE, "FREESTYLE_EDGE", 0, "Freestyle Edge Marks", ""},
 
        {SIMFACE_MATERIAL, "MATERIAL", 0, "Material", ""},
        {SIMFACE_IMAGE, "IMAGE", 0, "Image", ""},
@@ -703,6 +704,7 @@ static EnumPropertyItem prop_similar_types[] = {
        {SIMFACE_PERIMETER, "PERIMETER", 0, "Perimeter", ""},
        {SIMFACE_NORMAL, "NORMAL", 0, "Normal", ""},
        {SIMFACE_COPLANAR, "COPLANAR", 0, "Co-planar", ""},
+       {SIMFACE_FREESTYLE, "FREESTYLE_FACE", 0, "Freestyle Face Marks", ""},
 
        {0, NULL, 0, NULL, NULL}
 };
@@ -877,7 +879,7 @@ static EnumPropertyItem *select_similar_type_itemf(bContext *C, PointerRNA *UNUS
                        }
                }
                else if (em->selectmode & SCE_SELECT_FACE) {
-                       for (a = SIMFACE_MATERIAL; a <= SIMFACE_COPLANAR; a++) {
+                       for (a = SIMFACE_MATERIAL; a <= SIMFACE_FREESTYLE; a++) {
                                RNA_enum_items_add_value(&item, &totitem, prop_similar_types, a);
                        }
                }
@@ -1327,6 +1329,9 @@ static void edgetag_context_set(BMesh *bm, Scene *scene, BMEdge *e, int val)
                case EDGE_MODE_TAG_SHARP:
                        BM_elem_flag_set(e, BM_ELEM_SMOOTH, !val);
                        break;
+               case EDGE_MODE_TAG_FREESTYLE:
+                       BM_elem_flag_set(e, BM_ELEM_FREESTYLE, val);
+                       break;
                case EDGE_MODE_TAG_CREASE:
                        BM_elem_float_data_set(&bm->edata, e, CD_CREASE, (val) ? 1.0f : 0.0f);
                        break;
@@ -1345,6 +1350,8 @@ static int edgetag_context_check(Scene *scene, BMesh *bm, BMEdge *e)
                        return BM_elem_flag_test(e, BM_ELEM_SEAM);
                case EDGE_MODE_TAG_SHARP:
                        return !BM_elem_flag_test(e, BM_ELEM_SMOOTH);
+               case EDGE_MODE_TAG_FREESTYLE:
+                       return !BM_elem_flag_test(e, BM_ELEM_FREESTYLE);
                case EDGE_MODE_TAG_CREASE:
                        return BM_elem_float_data_get(&bm->edata, e, CD_CREASE) ? TRUE : FALSE;
                case EDGE_MODE_TAG_BEVEL:
@@ -1499,6 +1506,9 @@ static int mouse_mesh_shortest_path_edge(bContext *C, ViewContext *vc)
                        case EDGE_MODE_TAG_BEVEL:
                                me->drawflag |= ME_DRAWBWEIGHTS;
                                break;
+                       case EDGE_MODE_TAG_FREESTYLE:
+                               me->drawflag |= ME_DRAW_FREESTYLE_EDGE;
+                               break;
                }
                
                EDBM_update_generic(C, em, FALSE);