Blender V4.3
view3d_buttons.cc File Reference
#include <cfloat>
#include <cmath>
#include <cstdio>
#include <cstring>
#include "DNA_armature_types.h"
#include "DNA_curve_types.h"
#include "DNA_lattice_types.h"
#include "DNA_mesh_types.h"
#include "DNA_meshdata_types.h"
#include "DNA_meta_types.h"
#include "DNA_object_types.h"
#include "DNA_scene_types.h"
#include "MEM_guardedalloc.h"
#include "BLT_translation.hh"
#include "BLI_array_utils.h"
#include "BLI_bitmap.h"
#include "BLI_blenlib.h"
#include "BLI_math_matrix.h"
#include "BLI_math_rotation.h"
#include "BLI_math_vector.h"
#include "BLI_utildefines.h"
#include "BKE_action.hh"
#include "BKE_armature.hh"
#include "BKE_context.hh"
#include "BKE_curve.hh"
#include "BKE_customdata.hh"
#include "BKE_deform.hh"
#include "BKE_editmesh.hh"
#include "BKE_layer.hh"
#include "BKE_mesh_types.hh"
#include "BKE_object.hh"
#include "BKE_object_deform.h"
#include "BKE_object_types.hh"
#include "BKE_report.hh"
#include "BKE_screen.hh"
#include "DEG_depsgraph.hh"
#include "WM_api.hh"
#include "WM_types.hh"
#include "RNA_access.hh"
#include "RNA_prototypes.hh"
#include "ED_mesh.hh"
#include "ED_object.hh"
#include "ED_object_vgroup.hh"
#include "ED_screen.hh"
#include "ANIM_bone_collections.hh"
#include "UI_interface.hh"
#include "UI_resources.hh"
#include "view3d_intern.hh"

Go to the source code of this file.

Classes

struct  TransformMedian_Generic
 
struct  TransformMedian_Mesh
 
struct  TransformMedian_Curve
 
struct  TransformMedian_Lattice
 
union  TransformMedian
 
struct  TransformProperties
 

Macros

#define TRANSFORM_MEDIAN_ARRAY_LEN   (sizeof(TransformMedian) / sizeof(float))
 
#define B_VGRP_PNL_EDIT_SINGLE   8 /* or greater */
 

Enumerations

enum  { B_REDR = 2 , B_TRANSFORM_PANEL_MEDIAN = 1008 , B_TRANSFORM_PANEL_DIMS = 1009 }
 

Functions

static TransformPropertiesv3d_transform_props_ensure (View3D *v3d)
 
static float compute_scale_factor (const float ve_median, const float median)
 
static void apply_raw_diff (float *val, const int tot, const float ve_median, const float median)
 
static void apply_raw_diff_v3 (float val[3], const int tot, const float ve_median[3], const float median[3])
 
static void apply_scale_factor (float *val, const int tot, const float ve_median, const float median, const float sca)
 
static void apply_scale_factor_clamp (float *val, const int tot, const float ve_median, const float sca)
 
static void v3d_editvertex_buts (uiLayout *layout, View3D *v3d, Object *ob, float lim)
 
static void v3d_object_dimension_buts (bContext *C, uiLayout *layout, View3D *v3d, Object *ob)
 
static void do_view3d_vgroup_buttons (bContext *C, void *, int event)
 
static bool view3d_panel_vgroup_poll (const bContext *C, PanelType *)
 
static void update_active_vertex_weight (bContext *C, void *arg1, void *)
 
static void view3d_panel_vgroup (const bContext *C, Panel *panel)
 
static void v3d_transform_butsR (uiLayout *layout, PointerRNA *ptr)
 
static void v3d_posearmature_buts (uiLayout *layout, Object *ob)
 
static void v3d_editarmature_buts (uiLayout *layout, Object *ob)
 
static void v3d_editmetaball_buts (uiLayout *layout, Object *ob)
 
static void do_view3d_region_buttons (bContext *C, void *, int event)
 
static bool view3d_panel_transform_poll (const bContext *C, PanelType *)
 
static void view3d_panel_transform (const bContext *C, Panel *panel)
 
static void hide_collections_menu_draw (const bContext *C, Menu *menu)
 
void view3d_buttons_register (ARegionType *art)
 
static int view3d_object_mode_menu_exec (bContext *C, wmOperator *op)
 
void VIEW3D_OT_object_mode_pie_or_toggle (wmOperatorType *ot)
 
Edit Mesh Partial Updates
static void * editmesh_partial_update_begin_fn (bContext *, const uiBlockInteraction_Params *params, void *arg1)
 
static void editmesh_partial_update_end_fn (bContext *, const uiBlockInteraction_Params *, void *, void *user_data)
 
static void editmesh_partial_update_update_fn (bContext *C, const uiBlockInteraction_Params *, void *arg1, void *user_data)
 

Macro Definition Documentation

◆ B_VGRP_PNL_EDIT_SINGLE

#define B_VGRP_PNL_EDIT_SINGLE   8 /* or greater */

Definition at line 1247 of file view3d_buttons.cc.

Referenced by do_view3d_vgroup_buttons(), and view3d_panel_vgroup().

◆ TRANSFORM_MEDIAN_ARRAY_LEN

#define TRANSFORM_MEDIAN_ARRAY_LEN   (sizeof(TransformMedian) / sizeof(float))

Definition at line 115 of file view3d_buttons.cc.

Referenced by v3d_editvertex_buts().

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
B_REDR 
B_TRANSFORM_PANEL_MEDIAN 
B_TRANSFORM_PANEL_DIMS 

Definition at line 71 of file view3d_buttons.cc.

Function Documentation

◆ apply_raw_diff()

static void apply_raw_diff ( float * val,
const int tot,
const float ve_median,
const float median )
static

Apply helpers.

Note
In case we only have one element, copy directly the value instead of applying the diff or scale factor. Avoids some glitches when going e.g. from 3 to 0.0001 (see #37327).

Definition at line 234 of file view3d_buttons.cc.

Referenced by v3d_editvertex_buts().

◆ apply_raw_diff_v3()

static void apply_raw_diff_v3 ( float val[3],
const int tot,
const float ve_median[3],
const float median[3] )
static

Definition at line 239 of file view3d_buttons.cc.

References add_v3_v3(), and copy_v3_v3().

Referenced by v3d_editvertex_buts().

◆ apply_scale_factor()

static void apply_scale_factor ( float * val,
const int tot,
const float ve_median,
const float median,
const float sca )
static

Definition at line 252 of file view3d_buttons.cc.

Referenced by v3d_editvertex_buts().

◆ apply_scale_factor_clamp()

static void apply_scale_factor_clamp ( float * val,
const int tot,
const float ve_median,
const float sca )
static

Definition at line 263 of file view3d_buttons.cc.

References CLAMP, and ELEM.

Referenced by v3d_editvertex_buts().

◆ compute_scale_factor()

static float compute_scale_factor ( const float ve_median,
const float median )
static

Definition at line 202 of file view3d_buttons.cc.

References CLAMP.

Referenced by v3d_editvertex_buts().

◆ do_view3d_region_buttons()

◆ do_view3d_vgroup_buttons()

◆ editmesh_partial_update_begin_fn()

◆ editmesh_partial_update_end_fn()

static void editmesh_partial_update_end_fn ( bContext * ,
const uiBlockInteraction_Params * ,
void * ,
void * user_data )
static

Definition at line 161 of file view3d_buttons.cc.

References BM_mesh_partial_destroy().

Referenced by v3d_editvertex_buts().

◆ editmesh_partial_update_update_fn()

static void editmesh_partial_update_update_fn ( bContext * C,
const uiBlockInteraction_Params * ,
void * arg1,
void * user_data )
static

◆ hide_collections_menu_draw()

static void hide_collections_menu_draw ( const bContext * C,
Menu * menu )
static

◆ update_active_vertex_weight()

◆ v3d_editarmature_buts()

◆ v3d_editmetaball_buts()

static void v3d_editmetaball_buts ( uiLayout * layout,
Object * ob )
static

◆ v3d_editvertex_buts()

static void v3d_editvertex_buts ( uiLayout * layout,
View3D * v3d,
Object * ob,
float lim )
static

Definition at line 298 of file view3d_buttons.cc.

References add_v2_v2(), add_v3_v3(), apply_raw_diff(), apply_raw_diff_v3(), apply_scale_factor(), apply_scale_factor_clamp(), B_REDR, B_TRANSFORM_PANEL_MEDIAN, TransformMedian_Curve::b_weight, TransformMedian_Mesh::be_weight, uiBlockInteraction_CallbackData::begin_fn, BKE_curve_editNurbs_get(), BKE_nurb_handles_test(), BKE_nurb_project_2d(), BLI_assert, bm, BMEditMesh::bm, BM_data_layer_add_named(), BM_EDGES_OF_MESH, BM_ELEM_CD_GET_FLOAT, BM_ELEM_CD_GET_VOID_P, BM_elem_flag_test, BM_ELEM_SELECT, BM_ITER_MESH, BM_VERTS_OF_MESH, TransformMedian_Mesh::bv_weight, CD_MVERT_SKIN, CD_PROP_FLOAT, BMVert::co, compute_scale_factor(), copy_vn_fl(), CU_BEZIER, CU_IS_2D, TransformMedian::curve, CustomData_get_offset(), CustomData_get_offset_named(), CustomData_has_layer_named(), Object::data, Lattice::def, DEG2RADF, TransformMedian_Mesh::e_crease, BMesh::edata, Lattice::editlatt, editmesh_partial_update_begin_fn(), editmesh_partial_update_end_fn(), editmesh_partial_update_update_fn(), ELEM, BezTriple::f1, BPoint::f1, BezTriple::f2, BezTriple::f3, View3D::flag, float, TransformMedian::generic, Curve::id, Lattice::id, IFACE_, invert_m4_m4(), EditLatt::latt, TransformMedian::lattice, len_squared_v3(), LISTBASE_FOREACH, TransformMedian_Curve::location, TransformMedian_Generic::location, TransformMedian_Lattice::location, TransformMedian_Mesh::location, TransformMedian::mesh, mul_m4_v3(), mul_v3_fl(), NURB_HANDLE_TEST_EACH, OB_CURVES_LEGACY, OB_LATTICE, OB_MESH, OB_SURF, Lattice::pntsu, Lattice::pntsv, Lattice::pntsw, PROP_UNIT_LENGTH, PROP_UNIT_ROTATION, BezTriple::radius, BPoint::radius, MVertSkin::radius, TransformMedian_Curve::radius, RNA_pointer_create(), RNA_TRANSLATION_PREC_DEFAULT, Object::runtime, SELECT, TransformMedian_Mesh::skin, sub_vn_vnvn(), TransformProperties::tag_for_update, BezTriple::tilt, BPoint::tilt, TransformMedian_Curve::tilt, tilt_limit, TIP_, BMesh::totedgesel, BMesh::totvertsel, TRANSFORM_MEDIAN_ARRAY_LEN, Object::type, UI_block_align_begin(), UI_block_align_end(), UI_block_interaction_set(), UI_BTYPE_LABEL, UI_BTYPE_NUM, UI_BTYPE_TOGGLE, UI_BTYPE_TOGGLE_N, UI_but_number_precision_set(), UI_but_number_step_size_set(), UI_but_unit_type_set(), UI_SCALE_FAC, uiDefBut(), uiDefButBitS(), uiDefButF(), uiDefButR(), uiLayoutAbsoluteBlock(), V3D_GLOBAL_STATS, v3d_transform_props_ensure(), TransformMedian_Mesh::v_crease, BMesh::vdata, TransformProperties::ve_median, BezTriple::vec, BPoint::vec, BezTriple::weight, BPoint::weight, TransformMedian_Curve::weight, and TransformMedian_Lattice::weight.

Referenced by do_view3d_region_buttons(), and view3d_panel_transform().

◆ v3d_object_dimension_buts()

◆ v3d_posearmature_buts()

static void v3d_posearmature_buts ( uiLayout * layout,
Object * ob )
static

◆ v3d_transform_butsR()

◆ v3d_transform_props_ensure()

◆ view3d_buttons_register()

◆ view3d_object_mode_menu_exec()

◆ VIEW3D_OT_object_mode_pie_or_toggle()

◆ view3d_panel_transform()

◆ view3d_panel_transform_poll()

static bool view3d_panel_transform_poll ( const bContext * C,
PanelType *  )
static

◆ view3d_panel_vgroup()

static void view3d_panel_vgroup ( const bContext * C,
Panel * panel )
static

◆ view3d_panel_vgroup_poll()