Blender  V2.93
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
bool clipUVTransform (TransInfo *t, float vec[2], const bool resize)
 
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 eTFlag flags_from_data_type (eTConvertType data_type)
 
static eTConvertType convert_type_get (const TransInfo *t, Object **r_obj_armature)
 
void createTransData (bContext *C, TransInfo *t)
 
Transform Data Recalc/Flush
void clipMirrorModifier (TransInfo *t)
 
void animrecord_check_state (TransInfo *t, struct Object *ob)
 
static void recalcData_cursor_image (TransInfo *t)
 
static void recalcData_cursor (TransInfo *t)
 
static void recalcData_obedit (TransInfo *t)
 
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 Object ob 
)

◆ calc_distanceCurveVerts()

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

◆ clipMirrorModifier()

void clipMirrorModifier ( TransInfo t)

◆ clipUVData()

void clipUVData ( TransInfo t)

Definition at line 593 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().

◆ clipUVTransform()

bool clipUVTransform ( TransInfo t,
float  vec[2],
const bool  resize 
)

◆ constraints_list_needinv()

bool constraints_list_needinv ( TransInfo t,
ListBase list 
)

◆ convert_type_get()

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

◆ countAndCleanTransDataContainer()

static int countAndCleanTransDataContainer ( TransInfo t)
static

Definition at line 982 of file transform_convert.c.

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

Referenced by createTransData().

◆ createTransData()

void createTransData ( bContext C,
TransInfo t 
)

Definition at line 1351 of file transform_convert.c.

References BKE_scene_graph_evaluated_ensure(), BLI_assert, C, View3D::camera, convert_type_get(), countAndCleanTransDataContainer(), createTransActionData(), createTransArmatureVerts(), createTransCursor_image(), createTransCursor_view3d(), createTransCurveVerts(), createTransEdge(), createTransEditVerts(), createTransGPencil(), createTransGraphEditData(), createTransLatticeVerts(), createTransMaskingData(), createTransMBallVerts(), createTransMeshSkin(), createTransNlaData(), createTransNodeData(), createTransObject(), createTransPaintCurveVerts(), createTransParticleVerts(), createTransPose(), createTransSculpt(), createTransSeqData(), createTransTexspace(), createTransTrackingData(), createTransUVs(), CTX_CAMERA, CTX_data_main(), CTX_OBJECT, CTX_OBMODE_XFORM_OBDATA, CTX_OBMODE_XFORM_SKIP_CHILDREN, CTX_POSE_BONE, flags_from_data_type(), Object::id, init_proportional_edit(), init_TransDataContainers(), LIB_TAG_DOIT, NULL, NUM_NO_FRACTION, View3D::ob_center, OBACT, RegionView3D::persp, RGN_TYPE_WINDOW, RV3D_CAMOB, SCE_XFORM_DATA_ORIGIN, SCE_XFORM_SKIP_CHILDREN, SPACE_VIEW3D, t, ID::tag, TC_ACTION_DATA, TC_ARMATURE_VERTS, TC_CURSOR_IMAGE, TC_CURSOR_VIEW3D, TC_CURVE_VERTS, TC_GPENCIL, TC_GRAPH_EDIT_DATA, TC_LATTICE_VERTS, TC_MASKING_DATA, TC_MBALL_VERTS, TC_MESH_EDGES, TC_MESH_SKIN, TC_MESH_UV, TC_MESH_VERTS, TC_NLA_DATA, TC_NODE_DATA, TC_NONE, TC_OBJECT, TC_OBJECT_TEXSPACE, TC_PAINT_CURVE_VERTS, TC_PARTICLE_VERTS, TC_POSE, TC_SCULPT, TC_SEQ_DATA, and TC_TRACKING_DATA.

Referenced by calculateTransformCenter(), and initTransform().

◆ flags_from_data_type()

static eTFlag flags_from_data_type ( eTConvertType  data_type)
static

◆ FrameOnMouseSide()

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

◆ 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 ( FCurve fcu,
const int  sel_flag,
const 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 678 of file transform_convert.c.

References FCurve::bezt, BEZT_BINARYSEARCH_THRESH, BEZT_ISSEL_ANY, BLI_addtail(), BLI_freelistN(), BLI_listbase_is_empty(), delete_fcurve_key(), 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)

Definition at line 1695 of file transform_convert.c.

References flushTransNodes(), flushTransPaintCurve(), recalcData_actedit(), recalcData_cursor(), recalcData_cursor_image(), recalcData_curve(), recalcData_edit_armature(), recalcData_gpencil_strokes(), recalcData_graphedit(), recalcData_lattice(), recalcData_mask_common(), recalcData_mesh(), recalcData_mesh_skin(), recalcData_nla(), recalcData_obedit(), recalcData_objects(), recalcData_particles(), recalcData_pose(), recalcData_sculpt(), recalcData_sequencer(), recalcData_texspace(), recalcData_tracking(), recalcData_uv(), t, TC_ACTION_DATA, TC_ARMATURE_VERTS, TC_CURSOR_IMAGE, TC_CURSOR_VIEW3D, TC_CURVE_VERTS, TC_GPENCIL, TC_GRAPH_EDIT_DATA, TC_LATTICE_VERTS, TC_MASKING_DATA, TC_MBALL_VERTS, TC_MESH_EDGES, TC_MESH_SKIN, TC_MESH_UV, TC_MESH_VERTS, TC_NLA_DATA, TC_NODE_DATA, TC_NONE, TC_OBJECT, TC_OBJECT_TEXSPACE, TC_PAINT_CURVE_VERTS, TC_PARTICLE_VERTS, TC_POSE, TC_SCULPT, TC_SEQ_DATA, and TC_TRACKING_DATA.

Referenced by applyAlign(), applyBakeTime(), applyBevelWeight(), applyBoneEnvelope(), applyBoneRoll(), applyBoneSize(), applyCrease(), applyCurveShrinkFatten(), applyEdgeSlide(), applyGPOpacity(), applyGPShrinkFatten(), applyMaskShrinkFatten(), applyMirror(), applyNormalRotation(), applyPushPull(), applyResize(), applyRotation(), applySeqSlide(), applyShear(), applyShrinkFatten(), applySkinResize(), applyTilt(), applyTimeScale(), applyTimeSlide(), applyTimeTranslate(), applyToSphere(), applyTrackball(), applyTranslation(), applyTransObjects(), applyVertSlide(), Bend(), and restoreTransObjects().

◆ recalcData_cursor()

static void recalcData_cursor ( TransInfo t)
static

Definition at line 1677 of file transform_convert.c.

References DEG_id_tag_update(), ID_RECALC_COPY_ON_WRITE, and t.

Referenced by recalcData().

◆ recalcData_cursor_image()

static void recalcData_cursor_image ( TransInfo t)
static

Definition at line 1662 of file transform_convert.c.

References TransDataContainer::data, DEG_id_tag_update(), ID_RECALC_COPY_ON_WRITE, and t.

Referenced by recalcData().

◆ recalcData_obedit()

static void recalcData_obedit ( TransInfo t)
static

◆ 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 158 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 ( bContext C,
TransInfo t 
)

◆ 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 102 of file transform_convert.c.

References Freestyle::a, 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 116 of file transform_convert.c.

References Freestyle::a, and TransData::rdist.

Referenced by sort_trans_data_dist_container().

◆ transform_around_single_fallback()

void transform_around_single_fallback ( TransInfo t)

Definition at line 93 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 75 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 
)

◆ 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 617 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)