Blender
V3.3
|
#include "MEM_guardedalloc.h"
#include "DNA_object_types.h"
#include "BLI_math.h"
#include "BLI_string.h"
#include "BLT_translation.h"
#include "BKE_context.h"
#include "BKE_editmesh.h"
#include "BKE_global.h"
#include "BKE_layer.h"
#include "BKE_unit.h"
#include "DNA_curveprofile_types.h"
#include "DNA_mesh_types.h"
#include "RNA_access.h"
#include "RNA_define.h"
#include "RNA_prototypes.h"
#include "WM_api.h"
#include "WM_types.h"
#include "UI_interface.h"
#include "UI_resources.h"
#include "ED_mesh.h"
#include "ED_numinput.h"
#include "ED_screen.h"
#include "ED_space_api.h"
#include "ED_transform.h"
#include "ED_util.h"
#include "ED_view3d.h"
#include "mesh_intern.h"
Go to the source code of this file.
Classes | |
struct | BevelObjectStore |
struct | BevelData |
Macros | |
#define | MVAL_PIXEL_MARGIN 5.0f |
#define | PROFILE_HARD_MIN 0.0f |
#define | SEGMENTS_HARD_MAX 1000 |
#define | OFFSET_VALUE 0 |
#define | OFFSET_VALUE_PERCENT 1 |
#define | PROFILE_VALUE 2 |
#define | SEGMENTS_VALUE 3 |
#define | NUM_VALUE_KINDS 4 |
#define | WM_MODALKEY(_id) |
Functions | |
static float | get_bevel_offset (wmOperator *op) |
static void | edbm_bevel_update_status_text (bContext *C, wmOperator *op) |
static bool | edbm_bevel_init (bContext *C, wmOperator *op, const bool is_modal) |
static bool | edbm_bevel_calc (wmOperator *op) |
static void | edbm_bevel_exit (bContext *C, wmOperator *op) |
static void | edbm_bevel_cancel (bContext *C, wmOperator *op) |
static int | edbm_bevel_exec (bContext *C, wmOperator *op) |
static void | edbm_bevel_calc_initial_length (wmOperator *op, const wmEvent *event, bool mode_changed) |
static int | edbm_bevel_invoke (bContext *C, wmOperator *op, const wmEvent *event) |
static void | edbm_bevel_mouse_set_value (wmOperator *op, const wmEvent *event) |
static void | edbm_bevel_numinput_set_value (wmOperator *op) |
wmKeyMap * | bevel_modal_keymap (wmKeyConfig *keyconf) |
static int | edbm_bevel_modal (bContext *C, wmOperator *op, const wmEvent *event) |
static void | edbm_bevel_ui (bContext *C, wmOperator *op) |
void | MESH_OT_bevel (wmOperatorType *ot) |
Variables | |
static const char * | value_rna_name [NUM_VALUE_KINDS] |
static const float | value_clamp_min [NUM_VALUE_KINDS] = {0.0f, 0.0f, PROFILE_HARD_MIN, 1.0f} |
static const float | value_clamp_max [NUM_VALUE_KINDS] = {1e6, 100.0f, 1.0f, SEGMENTS_HARD_MAX} |
static const float | value_start [NUM_VALUE_KINDS] = {0.0f, 0.0f, 0.5f, 1.0f} |
static const float | value_scale_per_inch [NUM_VALUE_KINDS] = {0.0f, 100.0f, 1.0f, 4.0f} |
#define MVAL_PIXEL_MARGIN 5.0f |
Definition at line 45 of file editmesh_bevel.c.
#define NUM_VALUE_KINDS 4 |
Definition at line 56 of file editmesh_bevel.c.
#define OFFSET_VALUE 0 |
Definition at line 52 of file editmesh_bevel.c.
#define OFFSET_VALUE_PERCENT 1 |
Definition at line 53 of file editmesh_bevel.c.
#define PROFILE_HARD_MIN 0.0f |
Definition at line 47 of file editmesh_bevel.c.
#define PROFILE_VALUE 2 |
Definition at line 54 of file editmesh_bevel.c.
#define SEGMENTS_HARD_MAX 1000 |
Definition at line 49 of file editmesh_bevel.c.
#define SEGMENTS_VALUE 3 |
Definition at line 55 of file editmesh_bevel.c.
#define WM_MODALKEY | ( | _id | ) |
anonymous enum |
Definition at line 93 of file editmesh_bevel.c.
wmKeyMap* bevel_modal_keymap | ( | wmKeyConfig * | keyconf | ) |
Definition at line 591 of file editmesh_bevel.c.
References BEV_MODAL_AFFECT_CHANGE, BEV_MODAL_CANCEL, BEV_MODAL_CLAMP_OVERLAP_TOGGLE, BEV_MODAL_CONFIRM, BEV_MODAL_HARDEN_NORMALS_TOGGLE, BEV_MODAL_INNER_MITER_CHANGE, BEV_MODAL_MARK_SEAM_TOGGLE, BEV_MODAL_MARK_SHARP_TOGGLE, BEV_MODAL_OFFSET_MODE_CHANGE, BEV_MODAL_OUTER_MITER_CHANGE, BEV_MODAL_PROFILE_TYPE_CHANGE, BEV_MODAL_SEGMENTS_DOWN, BEV_MODAL_SEGMENTS_UP, BEV_MODAL_VALUE_OFFSET, BEV_MODAL_VALUE_PROFILE, BEV_MODAL_VALUE_SEGMENTS, BEV_MODAL_VERTEX_MESH_CHANGE, wmKeyMap::modal_items, NULL, WM_modalkeymap_assign(), WM_modalkeymap_ensure(), and WM_modalkeymap_find().
Referenced by ED_keymap_mesh().
|
static |
Definition at line 301 of file editmesh_bevel.c.
References BKE_editmesh_from_object(), BMEditMesh::bm, BM_ELEM_SELECT, BM_FACE, BMO_op_exec(), BMO_slot_buffer_hflag_enable(), CLAMPIS, BevelData::custom_profile, wmOperator::customdata, Object::data, EDBM_flag_disable_all(), EDBM_op_finish(), EDBM_op_init(), EDBM_redo_state_restore(), EDBM_update(), Mesh::flag, get_bevel_offset(), BevelData::is_modal, material, ME_AUTOSMOOTH, BevelObjectStore::mesh_backup, BevelObjectStore::ob, BevelData::ob_store, BevelData::ob_store_len, offset, wmOperator::ptr, RNA_boolean_get(), RNA_enum_get(), RNA_float_get(), RNA_int_get(), BMOperator::slots_out, Mesh::smoothresh, and Object::totcol.
Referenced by edbm_bevel_exec(), edbm_bevel_invoke(), and edbm_bevel_modal().
|
static |
Definition at line 469 of file editmesh_bevel.c.
References wmOperator::customdata, BevelData::initial_length, len, len_v2(), BevelData::mcenter, MVAL_PIXEL_MARGIN, wmOperator::ptr, RNA_float_get(), BevelData::scale, BevelData::segments, SEGMENTS_VALUE, usdtokens::st(), BevelData::value_mode, value_rna_name, and value_start.
Referenced by edbm_bevel_invoke(), and edbm_bevel_modal().
|
static |
Definition at line 429 of file editmesh_bevel.c.
References BKE_editmesh_from_object(), C, CTX_wm_region(), wmOperator::customdata, Object::data, ED_region_tag_redraw(), edbm_bevel_exit(), EDBM_redo_state_restore_and_free(), EDBM_update(), BevelData::is_modal, BevelObjectStore::mesh_backup, BevelObjectStore::ob, BevelData::ob_store, and BevelData::ob_store_len.
Referenced by edbm_bevel_exec(), edbm_bevel_invoke(), edbm_bevel_modal(), and MESH_OT_bevel().
|
static |
Definition at line 453 of file editmesh_bevel.c.
References C, edbm_bevel_calc(), edbm_bevel_cancel(), edbm_bevel_exit(), edbm_bevel_init(), OPERATOR_CANCELLED, and OPERATOR_FINISHED.
Referenced by MESH_OT_bevel().
|
static |
Definition at line 398 of file editmesh_bevel.c.
References blender::compositor::area(), BKE_editmesh_from_object(), C, CTX_wm_area(), CTX_wm_region(), wmOperator::customdata, BevelData::draw_handle_pixel, ED_area_status_text(), ED_region_draw_cb_exit(), EDBM_redo_state_free(), EDBM_selectmode_flush(), G, BevelData::is_modal, MEM_SAFE_FREE, BevelObjectStore::mesh_backup, NULL, BevelObjectStore::ob, BevelData::ob_store, BevelData::ob_store_len, SCE_SELECT_FACE, BMEditMesh::selectmode, and ARegion::type.
Referenced by edbm_bevel_cancel(), edbm_bevel_exec(), and edbm_bevel_modal().
|
static |
Definition at line 220 of file editmesh_bevel.c.
References B_UNIT_LENGTH, B_UNIT_NONE, BEVEL_AMT_PERCENT, BKE_editmesh_from_object(), BKE_view_layer_array_from_objects_in_edit_mode_unique_data, BMEditMesh::bm, C, CTX_data_scene(), CTX_data_tool_settings(), CTX_data_view_layer(), CTX_wm_region(), CTX_wm_view3d(), ToolSettings::custom_bevel_profile_preset, BevelData::custom_profile, wmOperator::customdata, BevelData::draw_handle_pixel, ED_region_draw_cb_activate(), ED_region_draw_mouse_line_cb(), EDBM_redo_state_store(), float(), G, G_TRANSFORM_EDIT, NumInput::idx_max, BevelData::initial_length, initNumInput(), BevelData::is_modal, mat4_to_scale(), max_ff(), BevelData::max_obj_scale, BevelData::mcenter, MEM_freeN, MEM_malloc_arrayN, MEM_mallocN, BevelObjectStore::mesh_backup, BevelData::num_input, NUM_NO_FRACTION, NUM_NO_NEGATIVE, NUM_NO_ZERO, NUM_VALUE_KINDS, BevelObjectStore::ob, BevelData::ob_store, BevelData::ob_store_len, Object::obmat, OFFSET_VALUE, OFFSET_VALUE_PERCENT, wmOperator::ptr, REGION_DRAW_POST_PIXEL, RNA_enum_get(), RNA_float_set(), RNA_int_get(), BevelData::scale, scene, BevelData::segments, SEGMENTS_VALUE, BevelData::shift_value, UnitSettings::system, BMesh::totvertsel, ARegion::type, Scene::unit, NumInput::unit_sys, NumInput::unit_type, NumInput::val_flag, BevelData::value_mode, and value_scale_per_inch.
Referenced by edbm_bevel_exec(), and edbm_bevel_invoke().
|
static |
Definition at line 493 of file editmesh_bevel.c.
References C, calculateTransformCenter(), CTX_wm_region_view3d(), wmOperator::customdata, ED_view3d_pixel_size(), ED_workspace_status_text(), edbm_bevel_calc(), edbm_bevel_calc_initial_length(), edbm_bevel_cancel(), edbm_bevel_init(), edbm_bevel_update_status_text(), BevelData::launch_event, BevelData::max_obj_scale, BevelData::mcenter, NULL, OFFSET_VALUE, OPERATOR_CANCELLED, OPERATOR_RUNNING_MODAL, BevelData::scale, wmEvent::type, V3D_AROUND_CENTER_MEDIAN, WM_event_add_modal_handler(), and WM_userdef_event_type_from_keymap_type().
Referenced by MESH_OT_bevel().
|
static |
Definition at line 664 of file editmesh_bevel.c.
References BEV_MODAL_AFFECT_CHANGE, BEV_MODAL_CANCEL, BEV_MODAL_CLAMP_OVERLAP_TOGGLE, BEV_MODAL_CONFIRM, BEV_MODAL_HARDEN_NORMALS_TOGGLE, BEV_MODAL_INNER_MITER_CHANGE, BEV_MODAL_MARK_SEAM_TOGGLE, BEV_MODAL_MARK_SHARP_TOGGLE, BEV_MODAL_OFFSET_MODE_CHANGE, BEV_MODAL_OUTER_MITER_CHANGE, BEV_MODAL_PROFILE_TYPE_CHANGE, BEV_MODAL_SEGMENTS_DOWN, BEV_MODAL_SEGMENTS_UP, BEV_MODAL_VALUE_OFFSET, BEV_MODAL_VALUE_PROFILE, BEV_MODAL_VALUE_SEGMENTS, BEV_MODAL_VERTEX_MESH_CHANGE, BEVEL_AFFECT_EDGES, BEVEL_AFFECT_VERTICES, BEVEL_AMT_OFFSET, BEVEL_AMT_PERCENT, BEVEL_MITER_ARC, BEVEL_MITER_PATCH, BEVEL_MITER_SHARP, BEVEL_PROFILE_CUSTOM, BEVEL_PROFILE_SUPERELLIPSE, BEVEL_VMESH_ADJ, BEVEL_VMESH_CUTOFF, C, wmOperator::customdata, ED_workspace_status_text(), edbm_bevel_calc(), edbm_bevel_calc_initial_length(), edbm_bevel_cancel(), edbm_bevel_exit(), edbm_bevel_mouse_set_value(), edbm_bevel_numinput_set_value(), edbm_bevel_update_status_text(), ELEM, EVT_MODAL_MAP, handleNumInput(), hasNumInput(), BevelData::initial_length, KM_PRESS, KM_RELEASE, BevelData::launch_event, LEFTMOUSE, max_ff(), MOUSEMOVE, MOUSEPAN, NULL, BevelData::num_input, OFFSET_VALUE, OFFSET_VALUE_PERCENT, OPERATOR_CANCELLED, OPERATOR_FINISHED, OPERATOR_RUNNING_MODAL, PROFILE_VALUE, wmOperator::ptr, RNA_boolean_get(), RNA_boolean_set(), RNA_enum_get(), RNA_enum_set(), RNA_int_set(), BevelData::segments, SEGMENTS_VALUE, type, and BevelData::value_mode.
Referenced by MESH_OT_bevel().
|
static |
Definition at line 534 of file editmesh_bevel.c.
References CLAMP, wmOperator::customdata, BevelData::initial_length, KM_SHIFT, len_v2(), BevelData::mcenter, wmEvent::modifier, MVAL_PIXEL_MARGIN, wmOperator::ptr, RNA_float_get(), RNA_float_set(), RNA_int_set(), BevelData::scale, BevelData::segments, SEGMENTS_VALUE, BevelData::shift_value, value_clamp_max, value_clamp_min, BevelData::value_mode, value_rna_name, and value_start.
Referenced by edbm_bevel_modal().
|
static |
Definition at line 573 of file editmesh_bevel.c.
References applyNumInput(), CLAMP, wmOperator::customdata, BevelData::num_input, wmOperator::ptr, RNA_float_get(), RNA_float_set(), RNA_int_set(), BevelData::segments, SEGMENTS_VALUE, value_clamp_max, value_clamp_min, BevelData::value_mode, and value_rna_name.
Referenced by edbm_bevel_modal().
|
static |
Definition at line 895 of file editmesh_bevel.c.
References BEVEL_AFFECT_EDGES, BEVEL_AMT_PERCENT, BEVEL_MITER_ARC, BEVEL_PROFILE_CUSTOM, BEVEL_PROFILE_SUPERELLIPSE, C, col, CTX_data_scene(), ELEM, Scene::id, IFACE_, wmOperator::layout, NULL, wmOperator::ptr, RNA_enum_get(), RNA_pointer_create(), scene, Scene::toolsettings, UI_ITEM_R_EXPAND, UI_ITEM_R_SLIDER, uiItemR(), uiItemS(), uiLayoutColumn(), uiLayoutColumnWithHeading(), uiLayoutRow(), uiLayoutSetActive(), uiLayoutSetPropDecorate(), uiLayoutSetPropSep(), and uiTemplateCurveProfile().
Referenced by MESH_OT_bevel().
|
static |
Definition at line 121 of file editmesh_bevel.c.
References B_UNIT_LENGTH, BEV_MODAL_AFFECT_CHANGE, BEV_MODAL_CANCEL, BEV_MODAL_CLAMP_OVERLAP_TOGGLE, BEV_MODAL_CONFIRM, BEV_MODAL_HARDEN_NORMALS_TOGGLE, BEV_MODAL_INNER_MITER_CHANGE, BEV_MODAL_MARK_SEAM_TOGGLE, BEV_MODAL_MARK_SHARP_TOGGLE, BEV_MODAL_OFFSET_MODE_CHANGE, BEV_MODAL_OUTER_MITER_CHANGE, BEV_MODAL_PROFILE_TYPE_CHANGE, BEV_MODAL_VALUE_OFFSET, BEV_MODAL_VALUE_PROFILE, BEV_MODAL_VALUE_SEGMENTS, BEV_MODAL_VERTEX_MESH_CHANGE, BEVEL_AMT_PERCENT, BKE_unit_value_as_string(), BLI_snprintf(), C, CTX_data_scene(), double(), ED_workspace_status_text(), NUM_STR_REP_LEN, wmOperator::ptr, RNA_boolean_get(), RNA_enum_get(), RNA_float_get(), RNA_int_get(), RNA_property_enum_get(), RNA_property_enum_name_gettexted(), RNA_struct_find_property(), UnitSettings::scale_length, TIP_, UI_MAX_DRAW_STR, Scene::unit, WM_bool_as_string(), and WM_MODALKEY.
Referenced by edbm_bevel_invoke(), and edbm_bevel_modal().
|
static |
Definition at line 113 of file editmesh_bevel.c.
References BEVEL_AMT_PERCENT, wmOperator::ptr, RNA_enum_get(), and RNA_float_get().
Referenced by edbm_bevel_calc().
void MESH_OT_bevel | ( | wmOperatorType * | ot | ) |
Definition at line 973 of file editmesh_bevel.c.
References BEVEL_AFFECT_EDGES, BEVEL_AFFECT_VERTICES, BEVEL_AMT_ABSOLUTE, BEVEL_AMT_DEPTH, BEVEL_AMT_OFFSET, BEVEL_AMT_PERCENT, BEVEL_AMT_WIDTH, BEVEL_FACE_STRENGTH_AFFECTED, BEVEL_FACE_STRENGTH_ALL, BEVEL_FACE_STRENGTH_NEW, BEVEL_FACE_STRENGTH_NONE, BEVEL_MITER_ARC, BEVEL_MITER_PATCH, BEVEL_MITER_SHARP, BEVEL_PROFILE_CUSTOM, BEVEL_PROFILE_SUPERELLIPSE, BEVEL_VMESH_ADJ, BEVEL_VMESH_CUTOFF, wmOperatorType::cancel, wmOperatorType::description, ED_operator_editmesh(), edbm_bevel_cancel(), edbm_bevel_exec(), edbm_bevel_invoke(), edbm_bevel_modal(), edbm_bevel_ui(), wmOperatorType::exec, wmOperatorType::flag, wmOperatorType::idname, wmOperatorType::invoke, wmOperatorType::modal, wmOperatorType::name, NULL, OPTYPE_BLOCKING, OPTYPE_GRAB_CURSOR_XY, OPTYPE_REGISTER, OPTYPE_UNDO, ot, wmOperatorType::poll, PROFILE_HARD_MIN, PROP_DISTANCE, PROP_FLOAT, PROP_HIDDEN, PROP_PERCENTAGE, PROP_SKIP_SAVE, RNA_def_boolean(), RNA_def_enum(), RNA_def_float(), RNA_def_int(), RNA_def_property(), RNA_def_property_flag(), RNA_def_property_range(), RNA_def_property_ui_range(), RNA_def_property_ui_text(), SEGMENTS_HARD_MAX, wmOperatorType::srna, and wmOperatorType::ui.
Referenced by ED_operatortypes_mesh().
|
static |
Definition at line 61 of file editmesh_bevel.c.
Referenced by edbm_bevel_mouse_set_value(), and edbm_bevel_numinput_set_value().
|
static |
Definition at line 60 of file editmesh_bevel.c.
Referenced by edbm_bevel_mouse_set_value(), and edbm_bevel_numinput_set_value().
|
static |
Definition at line 58 of file editmesh_bevel.c.
Referenced by edbm_bevel_calc_initial_length(), edbm_bevel_mouse_set_value(), and edbm_bevel_numinput_set_value().
|
static |
Definition at line 63 of file editmesh_bevel.c.
Referenced by edbm_bevel_init().
|
static |
Definition at line 62 of file editmesh_bevel.c.
Referenced by edbm_bevel_calc_initial_length(), and edbm_bevel_mouse_set_value().