From e6834fcf851e6a23c420b203468a78e460ea1e85 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 19 Mar 2012 21:40:17 +0000 Subject: bmesh inset: outset option --- source/blender/bmesh/intern/bmesh_opdefines.c | 1 + source/blender/bmesh/operators/bmo_inset.c | 13 ++++++++++--- 2 files changed, 11 insertions(+), 3 deletions(-) (limited to 'source/blender/bmesh') diff --git a/source/blender/bmesh/intern/bmesh_opdefines.c b/source/blender/bmesh/intern/bmesh_opdefines.c index 7230e1d24fa..51f61326a88 100644 --- a/source/blender/bmesh/intern/bmesh_opdefines.c +++ b/source/blender/bmesh/intern/bmesh_opdefines.c @@ -1089,6 +1089,7 @@ static BMOpDefine bmo_inset_def = { {BMO_OP_SLOT_BOOL, "use_even_offset"}, {BMO_OP_SLOT_BOOL, "use_relative_offset"}, {BMO_OP_SLOT_FLT, "thickness"}, + {BMO_OP_SLOT_BOOL, "use_outset"}, {0} /* null-terminating sentine */}, bmo_inset_exec, 0 diff --git a/source/blender/bmesh/operators/bmo_inset.c b/source/blender/bmesh/operators/bmo_inset.c index 6898f93e94c..04a39beec38 100644 --- a/source/blender/bmesh/operators/bmo_inset.c +++ b/source/blender/bmesh/operators/bmo_inset.c @@ -60,7 +60,8 @@ static void edge_loop_tangent(BMEdge *e, BMLoop *e_loop, float r_no[3]) void bmo_inset_exec(BMesh *bm, BMOperator *op) { - const int use_boundary = BMO_slot_bool_get(op, "use_boundary"); + const int use_outset = BMO_slot_bool_get(op, "use_outset"); + const int use_boundary = BMO_slot_bool_get(op, "use_boundary") && (use_outset == FALSE); const int use_even_offset = BMO_slot_bool_get(op, "use_even_offset"); const int use_even_boundry = use_even_offset; /* could make own option */ const int use_relative_offset = BMO_slot_bool_get(op, "use_relative_offset"); @@ -77,8 +78,14 @@ void bmo_inset_exec(BMesh *bm, BMOperator *op) BMFace *f; int i, j, k; - BM_mesh_elem_flag_disable_all(bm, BM_FACE, BM_ELEM_TAG); - BMO_slot_buffer_hflag_enable(bm, op, "faces", BM_FACE, BM_ELEM_TAG, FALSE); + if (use_outset == FALSE) { + BM_mesh_elem_flag_disable_all(bm, BM_FACE, BM_ELEM_TAG); + BMO_slot_buffer_hflag_enable(bm, op, "faces", BM_FACE, BM_ELEM_TAG, FALSE); + } + else { + BM_mesh_elem_flag_enable_all(bm, BM_FACE, BM_ELEM_TAG); + BMO_slot_buffer_hflag_disable(bm, op, "faces", BM_FACE, BM_ELEM_TAG, FALSE); + } /* first count all inset edges we will split */ /* fill in array and initialize tagging */ -- cgit v1.2.3