83 const float3 &snap_source_local,
87 float rotate_offset[3] = {0};
88 bool use_rotate_offset =
false;
104 original_normal = td->
axismtx[1];
107 original_normal = td->
axismtx[2];
122 use_rotate_offset =
true;
138 if (use_rotate_offset) {
145 if (gps !=
nullptr) {
176 data->t, data->tc, td, data->snap_source_local, data->vec, data->rotate_mode);
186 const int r_str_maxncpy,
192 r_str, r_str_maxncpy, val * unit->scale_length, 4,
B_UNIT_LENGTH, unit,
false);
225 float val = ival + dvec[0];
227 dvec[0] = val - ival;
252 for (
int i = 0; i < 3; i++) {
266 IFACE_(
"Proportional Size"),
289 "D: %s D: %s (%s)%s",
298 "D: %s D: %s D: %s (%s)%s",
322 "Dx: %s Dy: %s (%s)%s",
331 "Dx: %s Dy: %s Dz: %s (%s)%s",
419 add_v3_v3(r_val, absolute_grid_snap_offset);
422 t->
con.
applyVec(t,
nullptr,
nullptr, r_val, r_val);
462 float3 snap_source_local(0);
465 if (tc->use_local_mat) {
473 for (
int i = 0; i < tc->data_len; i++, td++) {
484 data.snap_source_local = snap_source_local;
486 data.rotate_mode = rotate_mode;
501 float base_offset[2] = {0.0f, 0.0f};
507 float min[2], max[2];
512 for (
TransData *td = tc->data; td < tc->data + tc->data_len; td++) {
518 if (
min[0] < base_offset[0]) {
519 vec[0] += base_offset[0] -
min[0];
522 else if (max[0] > base_offset[0] + t->
aspect[0]) {
523 vec[0] -= max[0] - base_offset[0] - t->
aspect[0];
527 if (
min[1] < base_offset[1]) {
528 vec[1] += base_offset[1] -
min[1];
531 else if (max[1] > base_offset[1] + t->
aspect[1]) {
532 vec[1] -= max[1] - base_offset[1] - t->
aspect[1];
542 float global_dir[3] = {0.0f};
579 t->
con.
applyVec(t,
nullptr,
nullptr, in, global_dir);
630 "Use 'Time_Translate' transform mode instead of 'Translation' mode "
631 "for translating keyframes in Dope Sheet Editor");
int BKE_image_find_nearest_tile_with_offset(const Image *image, const float co[2], float r_uv_offset[2]) ATTR_NONNULL(2
void BKE_report(ReportList *reports, eReportType type, const char *message)
size_t BKE_unit_value_as_string(char *str, int str_maxncpy, double value, int prec, int type, const UnitSettings *settings, bool pad)
void mul_m3_v3(const float M[3][3], float r[3])
void unit_m3(float m[3][3])
void mul_v3_m3v3(float r[3], const float M[3][3], const float a[3])
void rotation_between_vecs_to_mat3(float m[3][3], const float v1[3], const float v2[3])
MINLINE float len_squared_v3v3(const float a[3], const float b[3]) ATTR_WARN_UNUSED_RESULT
MINLINE void sub_v3_v3v3(float r[3], const float a[3], const float b[3])
MINLINE void mul_v3_fl(float r[3], float f)
MINLINE void copy_v3_v3(float r[3], const float a[3])
void minmax_v2v2_v2(float min[2], float max[2], const float vec[2])
MINLINE void add_v3_v3v3(float r[3], const float a[3], const float b[3])
MINLINE bool is_zero_v3(const float v[3]) ATTR_WARN_UNUSED_RESULT
MINLINE void copy_v3_fl(float r[3], float f)
MINLINE void zero_v3(float r[3])
MINLINE void mul_v3_v3fl(float r[3], const float a[3], float f)
MINLINE void add_v3_v3(float r[3], const float a[3])
MINLINE float len_v3(const float a[3]) ATTR_WARN_UNUSED_RESULT
size_t BLI_snprintf_rlen(char *__restrict dst, size_t dst_maxncpy, const char *__restrict format,...) ATTR_NONNULL(1
size_t BLI_snprintf(char *__restrict dst, size_t dst_maxncpy, const char *__restrict format,...) ATTR_NONNULL(1
char char size_t BLI_strncpy_rlen(char *__restrict dst, const char *__restrict src, size_t dst_maxncpy) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1
void BLI_task_parallel_range(int start, int stop, void *userdata, TaskParallelRangeFunc func, const TaskParallelSettings *settings)
BLI_INLINE void BLI_parallel_range_settings_defaults(TaskParallelSettings *settings)
#define IN_RANGE_INCL(a, b, c)
@ SNODE_INSERTOFS_DIR_RIGHT
void ED_area_status_text(ScrArea *area, const char *str)
eV3DProjStatus ED_view3d_project_float_global(const ARegion *region, const float co[3], float r_co[2], eV3DProjTest flag)
Read Guarded memory(de)allocation.
void *(* MEM_callocN)(size_t len, const char *str)
VecBase< T, 3 > transform_direction(const MatBase< T, 3, 3 > &mat, const VecBase< T, 3 > &direction)
VecBase< T, 3 > transform_point(const CartesianBasis &basis, const VecBase< T, 3 > &v)
MatBase< float, 4, 4 > float4x4
MatBase< float, 3, 3 > float3x3
void(* applyVec)(const TransInfo *t, const TransDataContainer *tc, const TransData *td, const float in[3], float r_out[3])
const TransDataContainer * tc
enum eTranslateRotateMode rotate_mode
float snap_spatial_precision
float values_modal_offset[4]
TransCustomDataContainer custom
TransConvertTypeInfo * data_type
enum eTranslateRotateMode rotate_mode
struct TranslateCustomData::@585 prev
float multi_frame_falloff
bGPDstroke_Runtime runtime