Blender V5.0
transform_gizmo_3d.cc File Reference
#include "BLI_array_utils.h"
#include "BLI_bounds.hh"
#include "BLI_function_ref.hh"
#include "BLI_listbase.h"
#include "BLI_math_geom.h"
#include "BLI_math_matrix.h"
#include "DNA_armature_types.h"
#include "DNA_lattice_types.h"
#include "DNA_meta_types.h"
#include "DNA_pointcloud_types.h"
#include "BKE_action.hh"
#include "BKE_armature.hh"
#include "BKE_context.hh"
#include "BKE_crazyspace.hh"
#include "BKE_curve.hh"
#include "BKE_editmesh.hh"
#include "BKE_global.hh"
#include "BKE_grease_pencil.hh"
#include "BKE_layer.hh"
#include "BKE_library.hh"
#include "BKE_object.hh"
#include "BKE_object_types.hh"
#include "BKE_paint.hh"
#include "BKE_pointcache.h"
#include "BKE_scene.hh"
#include "BKE_screen.hh"
#include "WM_api.hh"
#include "WM_message.hh"
#include "ED_armature.hh"
#include "ED_curves.hh"
#include "ED_gizmo_library.hh"
#include "ED_gizmo_utils.hh"
#include "ED_gpencil_legacy.hh"
#include "ED_grease_pencil.hh"
#include "ED_object.hh"
#include "ED_particle.hh"
#include "ED_screen.hh"
#include "UI_resources.hh"
#include "RNA_access.hh"
#include "RNA_define.hh"
#include "ANIM_armature.hh"
#include "transform.hh"
#include "transform_convert.hh"
#include "transform_gizmo.hh"
#include "transform_snap.hh"

Go to the source code of this file.

Classes

struct  blender::ed::transform::GizmoGroup

Namespaces

namespace  blender
namespace  blender::ed
namespace  blender::ed::transform

Macros

#define MAN_TRANS_X   (1 << 0)
#define MAN_TRANS_Y   (1 << 1)
#define MAN_TRANS_Z   (1 << 2)
#define MAN_TRANS_C   (MAN_TRANS_X | MAN_TRANS_Y | MAN_TRANS_Z)
#define MAN_ROT_X   (1 << 3)
#define MAN_ROT_Y   (1 << 4)
#define MAN_ROT_Z   (1 << 5)
#define MAN_ROT_C   (MAN_ROT_X | MAN_ROT_Y | MAN_ROT_Z)
#define MAN_SCALE_X   (1 << 8)
#define MAN_SCALE_Y   (1 << 9)
#define MAN_SCALE_Z   (1 << 10)
#define MAN_SCALE_C   (MAN_SCALE_X | MAN_SCALE_Y | MAN_SCALE_Z)
#define MAN_AXIS_RANGE_TRANS_START   MAN_AXIS_TRANS_X
#define MAN_AXIS_RANGE_TRANS_END   (MAN_AXIS_TRANS_ZX + 1)
#define MAN_AXIS_RANGE_ROT_START   MAN_AXIS_ROT_X
#define MAN_AXIS_RANGE_ROT_END   (MAN_AXIS_ROT_T + 1)
#define MAN_AXIS_RANGE_SCALE_START   MAN_AXIS_SCALE_X
#define MAN_AXIS_RANGE_SCALE_END   (MAN_AXIS_SCALE_ZX + 1)
#define FOREACH_EDIT_OBJECT_BEGIN(ob_iter, use_mat_local)
#define FOREACH_EDIT_OBJECT_END()
#define GIZMO_NEW_ARROW(v)
#define GIZMO_NEW_DIAL(v)
#define GIZMO_NEW_PRIM(v)

Enumerations

enum  {
  blender::ed::transform::MAN_AXIS_TRANS_X = 0 , blender::ed::transform::MAN_AXIS_TRANS_Y , blender::ed::transform::MAN_AXIS_TRANS_Z , blender::ed::transform::MAN_AXIS_TRANS_C ,
  blender::ed::transform::MAN_AXIS_TRANS_XY , blender::ed::transform::MAN_AXIS_TRANS_YZ , blender::ed::transform::MAN_AXIS_TRANS_ZX , blender::ed::transform::MAN_AXIS_ROT_X ,
  blender::ed::transform::MAN_AXIS_ROT_Y , blender::ed::transform::MAN_AXIS_ROT_Z , blender::ed::transform::MAN_AXIS_ROT_C , blender::ed::transform::MAN_AXIS_ROT_T ,
  blender::ed::transform::MAN_AXIS_SCALE_X , blender::ed::transform::MAN_AXIS_SCALE_Y , blender::ed::transform::MAN_AXIS_SCALE_Z , blender::ed::transform::MAN_AXIS_SCALE_C ,
  blender::ed::transform::MAN_AXIS_SCALE_XY , blender::ed::transform::MAN_AXIS_SCALE_YZ , blender::ed::transform::MAN_AXIS_SCALE_ZX , blender::ed::transform::MAN_AXIS_LAST = MAN_AXIS_SCALE_ZX + 1
}
enum  { blender::ed::transform::MAN_AXES_ALL = 0 , blender::ed::transform::MAN_AXES_TRANSLATE , blender::ed::transform::MAN_AXES_ROTATE , blender::ed::transform::MAN_AXES_SCALE }

Functions

static wmGizmoGroupblender::ed::transform::gizmogroup_xform_find (TransInfo *t)
bool blender::ed::transform::calc_pivot_pos (const bContext *C, const short pivot_type, float r_pivot_pos[3])
Gizmo
void blender::ed::transform::gizmo_prepare_mat (const bContext *C, RegionView3D *rv3d, const TransformBounds *tbounds)
void blender::ed::transform::gizmo_xform_message_subscribe (wmGizmoGroup *gzgroup, wmMsgBus *mbus, Scene *scene, bScreen *screen, ScrArea *area, ARegion *region, void(*type_fn)(wmGizmoGroupType *))
void blender::ed::transform::transform_gizmo_3d_model_from_constraint_and_mode_init (TransInfo *t)
void blender::ed::transform::transform_gizmo_3d_model_from_constraint_and_mode_set (TransInfo *t)
void blender::ed::transform::transform_gizmo_3d_model_from_constraint_and_mode_restore (TransInfo *t)

Variables

static wmGizmoGroupTypeblender::ed::transform::g_GGT_xform_gizmo = nullptr
static wmGizmoGroupTypeblender::ed::transform::g_GGT_xform_gizmo_context = nullptr
struct { 
   float   blender::ed::transform::min 
   float   blender::ed::transform::max 
blender::ed::transform::g_tw_axis_range [2]

Utilities

#define MAN_ITER_AXES_BEGIN(axis, axis_idx)
#define MAN_ITER_AXES_END
static wmGizmoblender::ed::transform::gizmo_get_axis_from_index (const GizmoGroup *ggd, const short axis_idx)
static short blender::ed::transform::gizmo_get_axis_type (const int axis_idx)
static uint blender::ed::transform::gizmo_orientation_axis (const int axis_idx, bool *r_is_plane)
static bool blender::ed::transform::gizmo_is_axis_visible (const RegionView3D *rv3d, const int twtype, const float idot[3], const int axis_type, const int axis_idx)
static void blender::ed::transform::gizmo_get_axis_color (const int axis_idx, const float idot[3], float r_col[4], float r_col_hi[4])
static void blender::ed::transform::gizmo_get_axis_constraint (const int axis_idx, bool r_axis[3])
static void blender::ed::transform::reset_tw_center (TransformBounds *tbounds)
static void blender::ed::transform::calc_tw_center (TransformBounds *tbounds, const float co[3])
static void blender::ed::transform::protectflag_to_drawflags (short protectflag, short *drawflags)
static Objectblender::ed::transform::gizmo_3d_transform_space_object_get (Scene *scene, ViewLayer *view_layer)
static int blender::ed::transform::gizmo_3d_foreach_selected (const bContext *C, const short orient_index, const bool use_curve_handles, const bool use_only_center, FunctionRef< void(const float3 &)> user_fn, const float(**r_mat)[4], short *r_drawflags)
int blender::ed::transform::calc_gizmo_stats (const bContext *C, const TransformCalcParams *params, TransformBounds *tbounds, RegionView3D *rv3d)
static void blender::ed::transform::gizmo_get_idot (const RegionView3D *rv3d, float r_idot[3])
static bool blender::ed::transform::gizmo_3d_calc_pos (const bContext *C, const Scene *scene, const TransformBounds *tbounds, const short pivot_type, float r_pivot_pos[3])
static void blender::ed::transform::gizmo_line_range (const int twtype, const short axis_type, float *r_start, float *r_end)
static void blender::ed::transform::gizmo_3d_dial_matrixbasis_calc (const ARegion *region, const float axis[3], const float center_global[3], const float mval_init[2], float r_mat_basis[4][4])

Transform Gizmo

#define MAN_AXIS_SCALE_PLANE_SCALE   0.7f
static void blender::ed::transform::gizmogroup_refresh_from_matrix (wmGizmoGroup *gzgroup, const float twmat[4][4], const float scale[3], const bool ignore_hidden)
static void blender::ed::transform::rotation_get_fn (const wmGizmo *, wmGizmoProperty *gz_prop, void *value)
static void blender::ed::transform::rotation_set_fn (const wmGizmo *, wmGizmoProperty *gz_prop, const void *value)
static void blender::ed::transform::gizmo_3d_setup_default_matrix (wmGizmo *axis, const int axis_idx)
static void blender::ed::transform::gizmo_3d_setup_draw_default (wmGizmo *axis, const int axis_idx)
static void blender::ed::transform::gizmo_3d_setup_draw_from_twtype (wmGizmo *axis, const int axis_idx, const int twtype)
static void blender::ed::transform::gizmo_3d_setup_draw_modal (wmGizmo *axis, const int axis_idx, const int twtype)
static GizmoGroupblender::ed::transform::gizmogroup_init (wmGizmoGroup *gzgroup)
static wmOperatorStatus blender::ed::transform::gizmo_modal (bContext *C, wmGizmo *widget, const wmEvent *event, eWM_GizmoFlagTweak)
static void blender::ed::transform::gizmogroup_init_properties_from_twtype (wmGizmoGroup *gzgroup)
static void blender::ed::transform::WIDGETGROUP_gizmo_setup (const bContext *C, wmGizmoGroup *gzgroup)
static void blender::ed::transform::gizmo_refresh_from_matrix (wmGizmo *axis, const int axis_idx, const int twtype, const float twmat[4][4], const float scale[3])
static void blender::ed::transform::WIDGETGROUP_gizmo_refresh (const bContext *C, wmGizmoGroup *gzgroup)
static void blender::ed::transform::WIDGETGROUP_gizmo_message_subscribe (const bContext *C, wmGizmoGroup *gzgroup, wmMsgBus *mbus)
static void blender::ed::transform::gizmogroup_hide_all (GizmoGroup *ggd)
static void blender::ed::transform::WIDGETGROUP_gizmo_draw_prepare (const bContext *C, wmGizmoGroup *gzgroup)
static void blender::ed::transform::gizmo_3d_draw_invoke (wmGizmoGroup *gzgroup, const ARegion *region, const int axis_idx_active, const float mval[2])
static void blender::ed::transform::WIDGETGROUP_gizmo_invoke_prepare (const bContext *C, wmGizmoGroup *gzgroup, wmGizmo *gz, const wmEvent *event)
static bool blender::ed::transform::WIDGETGROUP_gizmo_poll_generic (View3D *v3d)
static bool blender::ed::transform::WIDGETGROUP_gizmo_poll_context (const bContext *C, wmGizmoGroupType *)
static bool blender::ed::transform::WIDGETGROUP_gizmo_poll_tool (const bContext *C, wmGizmoGroupType *gzgt)
void blender::ed::transform::VIEW3D_GGT_xform_gizmo (wmGizmoGroupType *gzgt)
void blender::ed::transform::VIEW3D_GGT_xform_gizmo_context (wmGizmoGroupType *gzgt)

Macro Definition Documentation

◆ FOREACH_EDIT_OBJECT_BEGIN

#define FOREACH_EDIT_OBJECT_BEGIN ( ob_iter,
use_mat_local )
Value:
{ \
invert_m4_m4(obedit->runtime->world_to_object.ptr(), obedit->object_to_world().ptr()); \
scene, view_layer, CTX_wm_view3d(C)); \
for (Object *ob_iter : objects) { \
const bool use_mat_local = (ob_iter != obedit);
View3D * CTX_wm_view3d(const bContext *C)
blender::Vector< Object * > BKE_view_layer_array_from_objects_in_edit_mode(const Scene *scene, ViewLayer *view_layer, const View3D *v3d)
#define C
Definition RandGen.cpp:29

Referenced by blender::ed::transform::gizmo_3d_foreach_selected().

◆ FOREACH_EDIT_OBJECT_END

#define FOREACH_EDIT_OBJECT_END ( )
Value:
} \
} \
((void)0)

Referenced by blender::ed::transform::gizmo_3d_foreach_selected().

◆ GIZMO_NEW_ARROW

#define GIZMO_NEW_ARROW ( v)
Value:
{ \
ggd->gizmos[v] = WM_gizmo_new_ptr(gzt_arrow, gzgroup, nullptr); \
} \
((void)0)
ATTR_WARN_UNUSED_RESULT const BMVert * v
wmGizmo * WM_gizmo_new_ptr(const wmGizmoType *gzt, wmGizmoGroup *gzgroup, PointerRNA *properties)
Definition wm_gizmo.cc:85

Referenced by blender::ed::transform::gizmogroup_init().

◆ GIZMO_NEW_DIAL

#define GIZMO_NEW_DIAL ( v)
Value:
{ \
ggd->gizmos[v] = WM_gizmo_new_ptr(gzt_dial, gzgroup, nullptr); \
WM_gizmo_target_property_def_func(ggd->gizmos[v], "offset", &params); \
} \
((void)0)
uiWidgetBaseParameters params[MAX_WIDGET_BASE_BATCH]

Referenced by blender::ed::transform::gizmogroup_init().

◆ GIZMO_NEW_PRIM

#define GIZMO_NEW_PRIM ( v)
Value:
{ \
ggd->gizmos[v] = WM_gizmo_new_ptr(gzt_prim, gzgroup, nullptr); \
} \
((void)0)

Referenced by blender::ed::transform::gizmogroup_init().

◆ MAN_AXIS_RANGE_ROT_END

#define MAN_AXIS_RANGE_ROT_END   (MAN_AXIS_ROT_T + 1)

◆ MAN_AXIS_RANGE_ROT_START

#define MAN_AXIS_RANGE_ROT_START   MAN_AXIS_ROT_X

◆ MAN_AXIS_RANGE_SCALE_END

#define MAN_AXIS_RANGE_SCALE_END   (MAN_AXIS_SCALE_ZX + 1)

Definition at line 135 of file transform_gizmo_3d.cc.

Referenced by blender::ed::transform::gizmo_get_axis_type().

◆ MAN_AXIS_RANGE_SCALE_START

#define MAN_AXIS_RANGE_SCALE_START   MAN_AXIS_SCALE_X

Definition at line 134 of file transform_gizmo_3d.cc.

Referenced by blender::ed::transform::gizmo_get_axis_type().

◆ MAN_AXIS_RANGE_TRANS_END

#define MAN_AXIS_RANGE_TRANS_END   (MAN_AXIS_TRANS_ZX + 1)

Definition at line 117 of file transform_gizmo_3d.cc.

Referenced by blender::ed::transform::gizmo_get_axis_type().

◆ MAN_AXIS_RANGE_TRANS_START

#define MAN_AXIS_RANGE_TRANS_START   MAN_AXIS_TRANS_X

Definition at line 116 of file transform_gizmo_3d.cc.

Referenced by blender::ed::transform::gizmo_get_axis_type().

◆ MAN_AXIS_SCALE_PLANE_SCALE

#define MAN_AXIS_SCALE_PLANE_SCALE   0.7f

◆ MAN_ITER_AXES_BEGIN

◆ MAN_ITER_AXES_END

◆ MAN_ROT_C

#define MAN_ROT_C   (MAN_ROT_X | MAN_ROT_Y | MAN_ROT_Z)

Definition at line 88 of file transform_gizmo_3d.cc.

Referenced by blender::ed::transform::gizmo_is_axis_visible().

◆ MAN_ROT_X

#define MAN_ROT_X   (1 << 3)

◆ MAN_ROT_Y

#define MAN_ROT_Y   (1 << 4)

◆ MAN_ROT_Z

#define MAN_ROT_Z   (1 << 5)

◆ MAN_SCALE_C

#define MAN_SCALE_C   (MAN_SCALE_X | MAN_SCALE_Y | MAN_SCALE_Z)

Definition at line 93 of file transform_gizmo_3d.cc.

Referenced by blender::ed::transform::gizmo_is_axis_visible().

◆ MAN_SCALE_X

#define MAN_SCALE_X   (1 << 8)

◆ MAN_SCALE_Y

#define MAN_SCALE_Y   (1 << 9)

◆ MAN_SCALE_Z

#define MAN_SCALE_Z   (1 << 10)

◆ MAN_TRANS_C

#define MAN_TRANS_C   (MAN_TRANS_X | MAN_TRANS_Y | MAN_TRANS_Z)

Definition at line 83 of file transform_gizmo_3d.cc.

Referenced by blender::ed::transform::gizmo_is_axis_visible().

◆ MAN_TRANS_X

#define MAN_TRANS_X   (1 << 0)

◆ MAN_TRANS_Y

#define MAN_TRANS_Y   (1 << 1)

◆ MAN_TRANS_Z

#define MAN_TRANS_Z   (1 << 2)