diff options
Diffstat (limited to 'source/blender/bmesh/operators/bmo_similar.c')
-rw-r--r-- | source/blender/bmesh/operators/bmo_similar.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/source/blender/bmesh/operators/bmo_similar.c b/source/blender/bmesh/operators/bmo_similar.c index baabcffd162..5bea47969da 100644 --- a/source/blender/bmesh/operators/bmo_similar.c +++ b/source/blender/bmesh/operators/bmo_similar.c @@ -245,6 +245,21 @@ void bmo_similar_faces_exec(BMesh *bm, BMOperator *op) cont = false; } break; +#ifdef WITH_FREESTYLE + case SIMFACE_FREESTYLE: + if (CustomData_has_layer(&bm->pdata, CD_FREESTYLE_FACE)) { + FreestyleEdge *ffa1, *ffa2; + + ffa1 = CustomData_bmesh_get(&bm->pdata, fs->head.data, CD_FREESTYLE_FACE); + ffa2 = CustomData_bmesh_get(&bm->pdata, fm->head.data, CD_FREESTYLE_FACE); + + if (ffa1 && ffa2 && (ffa1->flag & FREESTYLE_FACE_MARK) == (ffa2->flag & FREESTYLE_FACE_MARK)) { + BMO_elem_flag_enable(bm, fm, FACE_MARK); + cont = false; + } + } + break; +#endif default: BLI_assert(0); } @@ -463,6 +478,21 @@ void bmo_similar_edges_exec(BMesh *bm, BMOperator *op) cont = false; } break; +#ifdef WITH_FREESTYLE + case SIMEDGE_FREESTYLE: + if (CustomData_has_layer(&bm->edata, CD_FREESTYLE_EDGE)) { + FreestyleEdge *fed1, *fed2; + + fed1 = CustomData_bmesh_get(&bm->edata, e->head.data, CD_FREESTYLE_EDGE); + fed2 = CustomData_bmesh_get(&bm->edata, es->head.data, CD_FREESTYLE_EDGE); + + if (fed1 && fed2 && (fed1->flag & FREESTYLE_EDGE_MARK) == (fed2->flag & FREESTYLE_EDGE_MARK)) { + BMO_elem_flag_enable(bm, e, EDGE_MARK); + cont = false; + } + } + break; +#endif default: BLI_assert(0); } |