Blender  V3.3
Classes | Functions
transform_convert.c File Reference
#include "DNA_anim_types.h"
#include "DNA_constraint_types.h"
#include "DNA_mesh_types.h"
#include "MEM_guardedalloc.h"
#include "BLI_kdtree.h"
#include "BLI_linklist_stack.h"
#include "BLI_listbase.h"
#include "BLI_math.h"
#include "BKE_action.h"
#include "BKE_anim_data.h"
#include "BKE_context.h"
#include "BKE_fcurve.h"
#include "BKE_global.h"
#include "BKE_image.h"
#include "BKE_layer.h"
#include "BKE_lib_id.h"
#include "BKE_main.h"
#include "BKE_modifier.h"
#include "BKE_nla.h"
#include "BKE_scene.h"
#include "ED_keyframes_edit.h"
#include "ED_keyframing.h"
#include "ED_particle.h"
#include "ED_screen.h"
#include "ED_screen_types.h"
#include "UI_view2d.h"
#include "WM_types.h"
#include "DEG_depsgraph_build.h"
#include "transform.h"
#include "transform_snap.h"
#include "transform_convert.h"

Go to the source code of this file.

Classes

struct  tRetainedKeyframe
 

Functions

bool transform_mode_use_local_origins (const TransInfo *t)
 
void transform_around_single_fallback_ex (TransInfo *t, int data_len_all)
 
void transform_around_single_fallback (TransInfo *t)
 
Proportional Editing
static int trans_data_compare_dist (const void *a, const void *b)
 
static int trans_data_compare_rdist (const void *a, const void *b)
 
static void sort_trans_data_dist_container (const TransInfo *t, TransDataContainer *tc)
 
void sort_trans_data_dist (TransInfo *t)
 
static void sort_trans_data_selected_first_container (TransDataContainer *tc)
 
static void sort_trans_data_selected_first (TransInfo *t)
 
static void set_prop_dist (TransInfo *t, const bool with_dist)
 
Pose Mode (Auto-IK)
static bool pchan_autoik_adjust (bPoseChannel *pchan, short chainlen)
 
void transform_autoik_update (TransInfo *t, short mode)
 
Curve Surface
void calc_distanceCurveVerts (TransData *head, TransData *tail, bool cyclic)
 
TransDataCurveHandleFlagsinitTransDataCurveHandles (TransData *td, struct BezTriple *bezt)
 
UV Coordinates
void clipUVData (TransInfo *t)
 
Animation Editors (General)
char transform_convert_frame_side_dir_get (TransInfo *t, float cframe)
 
bool FrameOnMouseSide (char side, float frame, float cframe)
 
Transform Utilities
bool constraints_list_needinv (TransInfo *t, ListBase *list)
 
Transform (After-Transform Update)
void special_aftertrans_update (bContext *C, TransInfo *t)
 
int special_transform_moving (TransInfo *t)
 
Transform Data Create
static int countAndCleanTransDataContainer (TransInfo *t)
 
static void init_proportional_edit (TransInfo *t)
 
static void init_TransDataContainers (TransInfo *t, Object *obact, Object **objects, uint objects_len)
 
static TransConvertTypeInfoconvert_type_get (const TransInfo *t, Object **r_obj_armature)
 
void createTransData (bContext *C, TransInfo *t)
 
Transform Data Recalc/Flush
void transform_convert_clip_mirror_modifier_apply (TransDataContainer *tc)
 
void animrecord_check_state (TransInfo *t, struct ID *id)
 
void transform_convert_flush_handle2D (TransData *td, TransData2D *td2d, const float y_fac)
 
void recalcData (TransInfo *t)
 

Animation Editor

typedef struct tRetainedKeyframe tRetainedKeyframe
 
void posttrans_fcurve_clean (FCurve *fcu, const int sel_flag, const bool use_handle)
 

Typedef Documentation

◆ tRetainedKeyframe

Function Documentation

◆ animrecord_check_state()

void animrecord_check_state ( TransInfo t,
struct ID id 
)

◆ calc_distanceCurveVerts()

void calc_distanceCurveVerts ( TransData head,
TransData tail,
bool  cyclic 
)

◆ clipUVData()

void clipUVData ( TransInfo t)

Definition at line 485 of file transform_convert.c.

References Freestyle::a, FOREACH_TRANS_DATA_CONTAINER, max_ff(), min_ff(), t, and TD_SKIP.

Referenced by applyResize(), and applyTranslation().

◆ constraints_list_needinv()

bool constraints_list_needinv ( TransInfo t,
ListBase list 
)

◆ convert_type_get()

static TransConvertTypeInfo* convert_type_get ( const TransInfo t,
Object **  r_obj_armature 
)
static

Definition at line 1003 of file transform_convert.c.

References CTX_CURSOR, CTX_EDGE_DATA, CTX_GPENCIL_STROKES, CTX_MASK, CTX_MOVIECLIP, CTX_PAINT_CURVE, CTX_SEQUENCER_IMAGE, CTX_TEXTURE_SPACE, ELEM, Object::mode, NULL, OB_ARMATURE, OB_CURVES_LEGACY, OB_LATTICE, OB_MBALL, OB_MESH, OB_MODE_ALL_PAINT, OB_MODE_ALL_WEIGHT_PAINT, OB_MODE_PAINT_GPENCIL, OB_MODE_PARTICLE_EDIT, OB_MODE_POSE, OB_MODE_SCULPT, OB_MODE_SCULPT_GPENCIL, OB_MODE_VERTEX_GPENCIL, OB_MODE_WEIGHT_GPENCIL, OB_SURF, OBACT, PE_get_current(), PE_start_edit(), Object::sculpt, SPACE_ACTION, SPACE_CLIP, SPACE_GRAPH, SPACE_IMAGE, SPACE_NLA, SPACE_NODE, SPACE_SEQ, SPACE_VIEW3D, t, TFM_BWEIGHT, TFM_SHEAR, TFM_SHRINKFATTEN, TFM_SKIN_RESIZE, TFM_VERT_CREASE, TransConvertType_Action, TransConvertType_Cursor3D, TransConvertType_CursorImage, TransConvertType_CursorSequencer, TransConvertType_Curve, TransConvertType_EditArmature, TransConvertType_GPencil, TransConvertType_Graph, TransConvertType_Lattice, TransConvertType_Mask, TransConvertType_MBall, TransConvertType_Mesh, TransConvertType_MeshEdge, TransConvertType_MeshSkin, TransConvertType_MeshUV, TransConvertType_MeshVertCData, TransConvertType_NLA, TransConvertType_Node, TransConvertType_Object, TransConvertType_ObjectTexSpace, TransConvertType_PaintCurve, TransConvertType_Particle, TransConvertType_Pose, TransConvertType_Sculpt, TransConvertType_Sequencer, TransConvertType_SequencerImage, TransConvertType_Tracking, and transform_object_deform_pose_armature_get().

Referenced by createTransData().

◆ countAndCleanTransDataContainer()

static int countAndCleanTransDataContainer ( TransInfo t)
static

Definition at line 817 of file transform_convert.c.

References BLI_assert, ELEM, MEM_reallocN, SWAP, and t.

Referenced by createTransData().

◆ createTransData()

void createTransData ( bContext C,
TransInfo t 
)

◆ FrameOnMouseSide()

bool FrameOnMouseSide ( char  side,
float  frame,
float  cframe 
)

This function tests if a point is on the "mouse" side of the cursor/frame-marking.

Definition at line 528 of file transform_convert.c.

Referenced by ActionFCurveToTransData(), count_fcurve_keys(), count_gplayer_frames(), count_masklayer_frames(), createTransNlaData(), GPLayerToTransData(), graph_key_shortest_dist(), and MaskLayerToTransData().

◆ init_proportional_edit()

static void init_proportional_edit ( TransInfo t)
static

◆ init_TransDataContainers()

static void init_TransDataContainers ( TransInfo t,
Object obact,
Object **  objects,
uint  objects_len 
)
static

◆ initTransDataCurveHandles()

TransDataCurveHandleFlags* initTransDataCurveHandles ( TransData td,
struct BezTriple bezt 
)

◆ pchan_autoik_adjust()

static bool pchan_autoik_adjust ( bPoseChannel pchan,
short  chainlen 
)
static

◆ posttrans_fcurve_clean()

void posttrans_fcurve_clean ( struct FCurve fcu,
int  sel_flag,
bool  use_handle 
)

Called during special_aftertrans_update to make sure selected keyframes replace any other keyframes which may reside on that frame (that is not selected).

Parameters
sel_flagThe flag (bezt.f1/2/3) value to use to determine selection. Usually SELECT, but may want to use a different one at times (if caller does not operate on selection).

Definition at line 558 of file transform_convert.c.

References FCurve::bezt, BEZT_BINARYSEARCH_THRESH, BEZT_ISSEL_ANY, BKE_fcurve_delete_key(), BLI_addtail(), BLI_freelistN(), BLI_listbase_is_empty(), FCURVE_DISCRETE_VALUES, FCURVE_INT_VALUES, FCurve::flag, float(), tRetainedKeyframe::frame, G, G_DEBUG, IS_EQT, ListBase::last, LISTBASE_FOREACH, MEM_callocN, NULL, FCurve::rna_path, testhandles_fcurve(), tRetainedKeyframe::tot_count, FCurve::totvert, tRetainedKeyframe::val, and BezTriple::vec.

Referenced by posttrans_action_clean(), special_aftertrans_update__actedit(), and special_aftertrans_update__graph().

◆ recalcData()

void recalcData ( TransInfo t)

◆ set_prop_dist()

static void set_prop_dist ( TransInfo t,
const bool  with_dist 
)
static

◆ sort_trans_data_dist()

void sort_trans_data_dist ( TransInfo t)

◆ sort_trans_data_dist_container()

static void sort_trans_data_dist_container ( const TransInfo t,
TransDataContainer tc 
)
static

◆ sort_trans_data_selected_first()

static void sort_trans_data_selected_first ( TransInfo t)
static

◆ sort_trans_data_selected_first_container()

static void sort_trans_data_selected_first_container ( TransDataContainer tc)
static

Make TD_SELECTED first in the array.

Definition at line 138 of file transform_convert.c.

References TransDataContainer::data, TransDataContainer::data_len, and TD_SELECTED.

Referenced by sort_trans_data_selected_first().

◆ special_aftertrans_update()

void special_aftertrans_update ( struct bContext C,
TransInfo t 
)

Inserting keys, point-cache, redraw events.

Definition at line 771 of file transform_convert.c.

References BLI_assert, C, CTX_data_main(), t, and TFM_DUMMY.

Referenced by calculateTransformCenter(), and transformEnd().

◆ special_transform_moving()

int special_transform_moving ( TransInfo t)

◆ trans_data_compare_dist()

static int trans_data_compare_dist ( const void a,
const void b 
)
static

Definition at line 82 of file transform_convert.c.

References Freestyle::a, usdtokens::b(), and TransData::dist.

Referenced by sort_trans_data_dist_container().

◆ trans_data_compare_rdist()

static int trans_data_compare_rdist ( const void a,
const void b 
)
static

Definition at line 96 of file transform_convert.c.

References Freestyle::a, usdtokens::b(), and TransData::rdist.

Referenced by sort_trans_data_dist_container().

◆ transform_around_single_fallback()

void transform_around_single_fallback ( TransInfo t)

Definition at line 73 of file transform_convert.c.

References t, and transform_around_single_fallback_ex().

Referenced by createTransArmatureVerts().

◆ transform_around_single_fallback_ex()

void transform_around_single_fallback_ex ( TransInfo t,
int  data_len_all 
)

Transforming around ourselves is no use, fallback to individual origins, useful for curve/armatures.

Definition at line 55 of file transform_convert.c.

References ELEM, t, T_OVERRIDE_CENTER, transform_mode_use_local_origins(), V3D_AROUND_ACTIVE, V3D_AROUND_CENTER_BOUNDS, V3D_AROUND_CENTER_MEDIAN, and V3D_AROUND_LOCAL_ORIGINS.

Referenced by createTransCurveVerts(), createTransGPencil_curves(), and transform_around_single_fallback().

◆ transform_autoik_update()

void transform_autoik_update ( TransInfo t,
short  mode 
)

Change the chain-length of auto-IK.

Definition at line 355 of file transform_convert.c.

References CTX_data_main(), DEG_relations_tag_update(), ELEM, FOREACH_TRANS_DATA_CONTAINER, bPoseChannel::next, NULL, pchan_autoik_adjust(), and t.

Referenced by createTransPose(), and transformEvent().

◆ transform_convert_clip_mirror_modifier_apply()

void transform_convert_clip_mirror_modifier_apply ( TransDataContainer tc)

◆ transform_convert_flush_handle2D()

void transform_convert_flush_handle2D ( TransData td,
TransData2D td2d,
const float  y_fac 
)

◆ transform_convert_frame_side_dir_get()

char transform_convert_frame_side_dir_get ( TransInfo t,
float  cframe 
)

Used for TFM_TIME_EXTEND.

Definition at line 506 of file transform_convert.c.

References center, t, T_MODAL, T_NO_MIRROR, and UI_view2d_region_to_view().

Referenced by createTransActionData(), createTransNlaData(), and createTransSeqData().

◆ transform_mode_use_local_origins()

bool transform_mode_use_local_origins ( const TransInfo t)