Blender  V3.3
Classes | Macros | Variables
editmesh_extrude_spin_gizmo.c File Reference
#include "BLI_listbase.h"
#include "BLI_math.h"
#include "BKE_context.h"
#include "BKE_scene.h"
#include "RNA_access.h"
#include "RNA_define.h"
#include "RNA_enum_types.h"
#include "WM_api.h"
#include "WM_message.h"
#include "WM_toolsystem.h"
#include "WM_types.h"
#include "ED_gizmo_utils.h"
#include "ED_screen.h"
#include "ED_view3d.h"
#include "UI_resources.h"
#include "MEM_guardedalloc.h"
#include "mesh_intern.h"
#include "ED_transform.h"
#include "ED_gizmo_library.h"
#include "ED_undo.h"

Go to the source code of this file.

Classes

struct  GizmoGroupData_SpinInit
 
struct  GizmoGroupData_SpinRedo
 

Macros

#define ORTHO_AXIS_OFFSET   2
 

Variables

static const float dial_angle_partial = M_PI_2
 
static const float dial_angle_partial_margin = 0.92f
 

Spin Tool Gizmo

#define USE_DIAL_HOVER
 
#define INIT_SCALE_BASE   2.3f
 
#define INIT_SCALE_BUTTON   0.15f
 
typedef struct GizmoGroupData_SpinInit GizmoGroupData_SpinInit
 
static const uchar shape_plus []
 
static void gizmo_mesh_spin_init_setup (const bContext *UNUSED(C), wmGizmoGroup *gzgroup)
 
static void gizmo_mesh_spin_init_refresh (const bContext *C, wmGizmoGroup *gzgroup)
 
static void gizmo_mesh_spin_init_refresh_axis_orientation (wmGizmoGroup *gzgroup, int axis_index, const float axis_vec[3], const float axis_tan[3])
 
static void gizmo_mesh_spin_init_draw_prepare (const bContext *C, wmGizmoGroup *gzgroup)
 
static void gizmo_mesh_spin_init_invoke_prepare (const bContext *UNUSED(C), wmGizmoGroup *gzgroup, wmGizmo *gz, const wmEvent *UNUSED(event))
 
static void gizmo_mesh_spin_init_message_subscribe (const bContext *C, wmGizmoGroup *gzgroup, struct wmMsgBus *mbus)
 
void MESH_GGT_spin (struct wmGizmoGroupType *gzgt)
 

Spin Redo Gizmo

#define USE_ANGLE_Z_ORIENT
 
typedef struct GizmoGroupData_SpinRedo GizmoGroupData_SpinRedo
 
static void gizmo_spin_exec (GizmoGroupData_SpinRedo *ggd)
 
static void gizmo_mesh_spin_redo_update_orient_axis (GizmoGroupData_SpinRedo *ggd, const float plane_no[3])
 
static void gizmo_mesh_spin_redo_update_from_op (GizmoGroupData_SpinRedo *ggd)
 
static void gizmo_spin_prop_depth_get (const wmGizmo *gz, wmGizmoProperty *gz_prop, void *value_p)
 
static void gizmo_spin_prop_depth_set (const wmGizmo *gz, wmGizmoProperty *gz_prop, const void *value_p)
 
static void gizmo_spin_prop_translate_get (const wmGizmo *gz, wmGizmoProperty *gz_prop, void *value_p)
 
static void gizmo_spin_prop_translate_set (const wmGizmo *gz, wmGizmoProperty *gz_prop, const void *value)
 
static void gizmo_spin_prop_axis_angle_get (const wmGizmo *gz, wmGizmoProperty *gz_prop, void *value_p)
 
static void gizmo_spin_prop_axis_angle_set (const wmGizmo *gz, wmGizmoProperty *gz_prop, const void *value_p)
 
static void gizmo_spin_prop_angle_get (const wmGizmo *gz, wmGizmoProperty *gz_prop, void *value_p)
 
static void gizmo_spin_prop_angle_set (const wmGizmo *gz, wmGizmoProperty *gz_prop, const void *value_p)
 
static bool gizmo_mesh_spin_redo_poll (const bContext *C, wmGizmoGroupType *gzgt)
 
static void gizmo_mesh_spin_redo_modal_from_setup (const bContext *C, wmGizmoGroup *gzgroup)
 
static void gizmo_mesh_spin_redo_setup (const bContext *C, wmGizmoGroup *gzgroup)
 
static void gizmo_mesh_spin_redo_draw_prepare (const bContext *UNUSED(C), wmGizmoGroup *gzgroup)
 
void MESH_GGT_spin_redo (struct wmGizmoGroupType *gzgt)
 

Macro Definition Documentation

◆ INIT_SCALE_BASE

#define INIT_SCALE_BASE   2.3f

Definition at line 89 of file editmesh_extrude_spin_gizmo.c.

◆ INIT_SCALE_BUTTON

#define INIT_SCALE_BUTTON   0.15f

Definition at line 90 of file editmesh_extrude_spin_gizmo.c.

◆ ORTHO_AXIS_OFFSET

#define ORTHO_AXIS_OFFSET   2

Definition at line 50 of file editmesh_extrude_spin_gizmo.c.

◆ USE_ANGLE_Z_ORIENT

#define USE_ANGLE_Z_ORIENT

Orient the dial so the 'arc' starts where the mouse cursor is, this is simply to keep the gizmo displaying where the cursor starts. It's not needed for practical functionality.

Definition at line 482 of file editmesh_extrude_spin_gizmo.c.

◆ USE_DIAL_HOVER

#define USE_DIAL_HOVER

Definition at line 87 of file editmesh_extrude_spin_gizmo.c.

Typedef Documentation

◆ GizmoGroupData_SpinInit

◆ GizmoGroupData_SpinRedo

Function Documentation

◆ gizmo_mesh_spin_init_draw_prepare()

static void gizmo_mesh_spin_init_draw_prepare ( const bContext C,
wmGizmoGroup gzgroup 
)
static

◆ gizmo_mesh_spin_init_invoke_prepare()

static void gizmo_mesh_spin_init_invoke_prepare ( const bContext UNUSEDC,
wmGizmoGroup gzgroup,
wmGizmo gz,
const wmEvent UNUSEDevent 
)
static

◆ gizmo_mesh_spin_init_message_subscribe()

static void gizmo_mesh_spin_init_message_subscribe ( const bContext C,
wmGizmoGroup gzgroup,
struct wmMsgBus mbus 
)
static

◆ gizmo_mesh_spin_init_refresh()

static void gizmo_mesh_spin_init_refresh ( const bContext C,
wmGizmoGroup gzgroup 
)
static

◆ gizmo_mesh_spin_init_refresh_axis_orientation()

static void gizmo_mesh_spin_init_refresh_axis_orientation ( wmGizmoGroup gzgroup,
int  axis_index,
const float  axis_vec[3],
const float  axis_tan[3] 
)
static

◆ gizmo_mesh_spin_init_setup()

static void gizmo_mesh_spin_init_setup ( const bContext UNUSEDC,
wmGizmoGroup gzgroup 
)
static

◆ gizmo_mesh_spin_redo_draw_prepare()

static void gizmo_mesh_spin_redo_draw_prepare ( const bContext UNUSEDC,
wmGizmoGroup gzgroup 
)
static

◆ gizmo_mesh_spin_redo_modal_from_setup()

static void gizmo_mesh_spin_redo_modal_from_setup ( const bContext C,
wmGizmoGroup gzgroup 
)
static

◆ gizmo_mesh_spin_redo_poll()

static bool gizmo_mesh_spin_redo_poll ( const bContext C,
wmGizmoGroupType gzgt 
)
static

◆ gizmo_mesh_spin_redo_setup()

static void gizmo_mesh_spin_redo_setup ( const bContext C,
wmGizmoGroup gzgroup 
)
static

Definition at line 801 of file editmesh_extrude_spin_gizmo.c.

References wmWindow::active, bScreen::active_region, GizmoGroupData_SpinRedo::angle_z, C, wmGizmo::color, wmGizmo::color_hi, GizmoGroupData_SpinRedo::context, copy_m3_m3(), copy_v3_fl(), copy_v3_v3(), CTX_wm_region(), CTX_wm_view3d(), CTX_wm_window(), wmGizmoGroup::customdata, GizmoGroupData_SpinInit::data, GizmoGroupData_SpinRedo::data, ED_GIZMO_ARROW_STYLE_NORMAL, ED_GIZMO_DIAL_DRAW_FLAG_ANGLE_MIRROR, ED_GIZMO_DIAL_DRAW_FLAG_ANGLE_START_Y, ED_GIZMO_DIAL_DRAW_FLAG_ANGLE_VALUE, ED_GIZMO_DIAL_DRAW_FLAG_CLIP, ED_GIZMO_DIAL_DRAW_FLAG_FILL, ED_GIZMO_MOVE_STYLE_RING_2D, ED_view3d_win_to_3d_int(), ED_view3d_win_to_3d_on_plane_int(), wmWindow::eventstate, ARegion::gizmo_map, gizmo_mesh_spin_redo_modal_from_setup(), gizmo_mesh_spin_redo_update_from_op(), gizmo_mesh_spin_redo_update_orient_axis(), GizmoGroupData_SpinInit::gizmos, invert_m3_m3(), GizmoGroupData_SpinInit::invoke, is_zero_v3(), M_PI, wmGizmo::matrix_basis, MEM_callocN, mul_m3_v3(), normalize_v3(), NULL, GizmoGroupData_SpinRedo::op, GizmoGroupData_SpinRedo::orient_axis_relative, GizmoGroupData_SpinInit::orient_mat, GizmoGroupData_SpinRedo::orient_mat, GizmoGroupData_SpinInit::ortho_axis_active, GizmoGroupData_SpinRedo::ot, ot, plane_from_point_normal_v3(), GizmoGroupData_SpinRedo::prop_angle, GizmoGroupData_SpinRedo::prop_axis_co, GizmoGroupData_SpinRedo::prop_axis_no, wmOperator::ptr, wmGizmo::ptr, RNA_boolean_set(), RNA_enum_set(), RNA_float_set(), RNA_property_float_get_array(), RNA_struct_type_find_property(), GizmoGroupData_SpinRedo::rotate_view, GizmoGroupData_SpinRedo::rotate_xy, wmOperatorType::srna, sub_v3_v3v3(), TH_AXIS_X, TH_GIZMO_PRIMARY, GizmoGroupData_SpinRedo::translate_c, GizmoGroupData_SpinRedo::translate_xy, wmOperator::type, UI_GetThemeColor3fv(), unit_m3(), UNLIKELY, ARegion::winrct, WM_GIZMO_DRAW_VALUE, WM_gizmo_new_ptr(), WM_gizmo_set_flag(), WM_gizmo_set_line_width(), WM_gizmo_set_scale(), WM_gizmo_target_property_def_func(), WM_gizmomap_group_find(), WM_gizmotype_find(), WM_operator_last_redo(), WM_operatortype_find(), WM_window_get_active_screen(), rcti::xmin, GizmoGroupData_SpinInit::xyz_view, rcti::ymin, and zero_v4().

Referenced by MESH_GGT_spin_redo().

◆ gizmo_mesh_spin_redo_update_from_op()

static void gizmo_mesh_spin_redo_update_from_op ( GizmoGroupData_SpinRedo ggd)
static

◆ gizmo_mesh_spin_redo_update_orient_axis()

static void gizmo_mesh_spin_redo_update_orient_axis ( GizmoGroupData_SpinRedo ggd,
const float  plane_no[3] 
)
static

◆ gizmo_spin_exec()

static void gizmo_spin_exec ( GizmoGroupData_SpinRedo ggd)
static

◆ gizmo_spin_prop_angle_get()

static void gizmo_spin_prop_angle_get ( const wmGizmo gz,
wmGizmoProperty gz_prop,
void value_p 
)
static

◆ gizmo_spin_prop_angle_set()

static void gizmo_spin_prop_angle_set ( const wmGizmo gz,
wmGizmoProperty gz_prop,
const void value_p 
)
static

◆ gizmo_spin_prop_axis_angle_get()

static void gizmo_spin_prop_axis_angle_get ( const wmGizmo gz,
wmGizmoProperty gz_prop,
void value_p 
)
static

◆ gizmo_spin_prop_axis_angle_set()

static void gizmo_spin_prop_axis_angle_set ( const wmGizmo gz,
wmGizmoProperty gz_prop,
const void value_p 
)
static

◆ gizmo_spin_prop_depth_get()

static void gizmo_spin_prop_depth_get ( const wmGizmo gz,
wmGizmoProperty gz_prop,
void value_p 
)
static

◆ gizmo_spin_prop_depth_set()

static void gizmo_spin_prop_depth_set ( const wmGizmo gz,
wmGizmoProperty gz_prop,
const void value_p 
)
static

◆ gizmo_spin_prop_translate_get()

static void gizmo_spin_prop_translate_get ( const wmGizmo gz,
wmGizmoProperty gz_prop,
void value_p 
)
static

◆ gizmo_spin_prop_translate_set()

static void gizmo_spin_prop_translate_set ( const wmGizmo gz,
wmGizmoProperty gz_prop,
const void value 
)
static

◆ MESH_GGT_spin()

void MESH_GGT_spin ( struct wmGizmoGroupType gzgt)

◆ MESH_GGT_spin_redo()

void MESH_GGT_spin_redo ( struct wmGizmoGroupType gzgt)

Variable Documentation

◆ dial_angle_partial

const float dial_angle_partial = M_PI_2
static

Orient the handles towards the selection (can be slow with high-poly mesh!).

Definition at line 47 of file editmesh_extrude_spin_gizmo.c.

Referenced by gizmo_mesh_spin_init_draw_prepare(), gizmo_mesh_spin_init_refresh(), and gizmo_mesh_spin_init_setup().

◆ dial_angle_partial_margin

const float dial_angle_partial_margin = 0.92f
static

◆ shape_plus

const uchar shape_plus[]
static
Initial value:
= {
0x73, 0x73, 0x73, 0x36, 0x8c, 0x36, 0x8c, 0x73, 0xc9, 0x73, 0xc9, 0x8c, 0x8c,
0x8c, 0x8c, 0xc9, 0x73, 0xc9, 0x73, 0x8c, 0x36, 0x8c, 0x36, 0x73, 0x36, 0x73,
}

Definition at line 92 of file editmesh_extrude_spin_gizmo.c.

Referenced by gizmo_mesh_spin_init_setup().