diff options
author | Sergej Reich <sergej.reich@googlemail.com> | 2013-11-23 20:17:12 +0400 |
---|---|---|
committer | Sergej Reich <sergej.reich@googlemail.com> | 2013-11-23 20:17:12 +0400 |
commit | 39dc956f593b3406bf1d81fb83c557b7b51f5327 (patch) | |
tree | 50b59815aad48902a6563aefc8b944daf34c401e /source/blender/editors/mesh/editmesh_bevel.c | |
parent | 5d5176095e82b34499e15d74f1fb76d56f4d9508 (diff) | |
parent | d846c9a3b75c3d6f20bc7ab7d2da6cdd18bbbef2 (diff) |
Merge branch 'master' into soc-2013-rigid_body_simsoc-2013-rigid_body_sim
Conflicts:
intern/rigidbody/CMakeLists.txt
release/datafiles/splash.png
source/blender/editors/space_view3d/drawobject.c
source/blender/makesdna/DNA_view3d_types.h
Diffstat (limited to 'source/blender/editors/mesh/editmesh_bevel.c')
-rw-r--r-- | source/blender/editors/mesh/editmesh_bevel.c | 31 |
1 files changed, 24 insertions, 7 deletions
diff --git a/source/blender/editors/mesh/editmesh_bevel.c b/source/blender/editors/mesh/editmesh_bevel.c index 97da0047793..ddb58cd6c7b 100644 --- a/source/blender/editors/mesh/editmesh_bevel.c +++ b/source/blender/editors/mesh/editmesh_bevel.c @@ -131,6 +131,7 @@ static bool edbm_bevel_calc(wmOperator *op) BMEditMesh *em = opdata->em; BMOperator bmop; const float offset = RNA_float_get(op->ptr, "offset"); + const int offset_type = RNA_enum_get(op->ptr, "offset_type"); const int segments = RNA_int_get(op->ptr, "segments"); const bool vertex_only = RNA_boolean_get(op->ptr, "vertex_only"); @@ -140,8 +141,8 @@ static bool edbm_bevel_calc(wmOperator *op) } EDBM_op_init(em, &bmop, op, - "bevel geom=%hev offset=%f segments=%i vertex_only=%b", - BM_ELEM_SELECT, offset, segments, vertex_only); + "bevel geom=%hev offset=%f segments=%i vertex_only=%b offset_type=%i", + BM_ELEM_SELECT, offset, segments, vertex_only, offset_type); BMO_op_exec(em->bm, &bmop); @@ -185,7 +186,7 @@ static void edbm_bevel_exit(bContext *C, wmOperator *op) op->customdata = NULL; } -static int edbm_bevel_cancel(bContext *C, wmOperator *op) +static void edbm_bevel_cancel(bContext *C, wmOperator *op) { BevelData *opdata = op->customdata; if (opdata->is_modal) { @@ -197,7 +198,6 @@ static int edbm_bevel_cancel(bContext *C, wmOperator *op) /* need to force redisplay or we may still view the modified result */ ED_region_tag_redraw(CTX_wm_region(C)); - return OPERATOR_CANCELLED; } /* bevel! yay!!*/ @@ -257,12 +257,14 @@ static int edbm_bevel_invoke(bContext *C, wmOperator *op, const wmEvent *event) static float edbm_bevel_mval_factor(wmOperator *op, const wmEvent *event) { BevelData *opdata = op->customdata; - int use_dist = true; + bool use_dist = true; + bool is_percent = false; float mdiff[2]; float factor; mdiff[0] = opdata->mcenter[0] - event->mval[0]; mdiff[1] = opdata->mcenter[1] - event->mval[1]; + is_percent = (RNA_enum_get(op->ptr, "offset_type") == BEVEL_AMT_PERCENT); if (use_dist) { factor = ((len_v2(mdiff) - MVAL_PIXEL_MARGIN) - opdata->initial_length) * opdata->pixel_size; @@ -287,7 +289,13 @@ static float edbm_bevel_mval_factor(wmOperator *op, const wmEvent *event) if (factor < 0.0f) factor = 0.0f; } else { - CLAMP(factor, 0.0f, 1.0f); + if (is_percent) { + factor *= 100.0f; + CLAMP(factor, 0.0f, 100.0f); + } + else { + CLAMP(factor, 0.0f, 1.0f); + } } return factor; @@ -362,6 +370,14 @@ static int edbm_bevel_modal(bContext *C, wmOperator *op, const wmEvent *event) void MESH_OT_bevel(wmOperatorType *ot) { + static EnumPropertyItem offset_type_items[] = { + {BEVEL_AMT_OFFSET, "OFFSET", 0, "Offset", "Amount is offset of new edges from original"}, + {BEVEL_AMT_WIDTH, "WIDTH", 0, "Width", "Amount is width of new face"}, + {BEVEL_AMT_DEPTH, "DEPTH", 0, "Depth", "Amount is perpendicular distance from original edge to bevel face"}, + {BEVEL_AMT_PERCENT, "PERCENT", 0, "Percent", "Amount is percent of adjacent edge length"}, + {0, NULL, 0, NULL, NULL}, + }; + /* identifiers */ ot->name = "Bevel"; ot->description = "Edge Bevel"; @@ -377,7 +393,8 @@ void MESH_OT_bevel(wmOperatorType *ot) /* flags */ ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO | OPTYPE_GRAB_POINTER | OPTYPE_BLOCKING; - RNA_def_float(ot->srna, "offset", 0.0f, -FLT_MAX, FLT_MAX, "Offset", "", 0.0f, 1.0f); + RNA_def_enum(ot->srna, "offset_type", offset_type_items, 0, "Amount Type", "What distance Amount measures"); + RNA_def_float(ot->srna, "offset", 0.0f, -FLT_MAX, FLT_MAX, "Amount", "", 0.0f, 1.0f); RNA_def_int(ot->srna, "segments", 1, 1, 50, "Segments", "Segments for curved edge", 1, 8); RNA_def_boolean(ot->srna, "vertex_only", false, "Vertex only", "Bevel only vertices"); } |