Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2012-03-20 01:40:17 +0400
committerCampbell Barton <ideasman42@gmail.com>2012-03-20 01:40:17 +0400
commite6834fcf851e6a23c420b203468a78e460ea1e85 (patch)
tree64a0d273b02cd9ab64bed3163d21defc8cbb9e6b /source/blender/bmesh
parent9beef61199f4664b80f9e36617873bff7a6bb5ec (diff)
bmesh inset: outset option
Diffstat (limited to 'source/blender/bmesh')
-rw-r--r--source/blender/bmesh/intern/bmesh_opdefines.c1
-rw-r--r--source/blender/bmesh/operators/bmo_inset.c13
2 files changed, 11 insertions, 3 deletions
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 */