102 for (bezt = fcu->
bezt, i = 0; i < fcu->totvert; bezt++, i++) {
110 if ((ok = key_ok(ked, bezt))) {
118 if (key_cb(ked, bezt)) {
125 for (bezt = fcu->
bezt, i = 0; i < fcu->totvert; bezt++, i++) {
133 if (key_cb(ked, bezt)) {
231 dummychan.
data = &dummybase;
232 dummychan.
id = &ob->
id;
236 ac.
data = &dummychan;
245 for (ale = anim_data.
first; ale; ale = ale->
next) {
280 dummychan.
data = sce;
281 dummychan.
id = &sce->
id;
285 ac.
data = &dummychan;
294 for (ale = anim_data.
first; ale; ale = ale->
next) {
328 for (ale = anim_data.
first; ale; ale = ale->
next) {
468 for (ale = anim_data.
first; ale; ale = ale->
next) {
494 for (ale = anim_data.
first; ale; ale = ale->
next) {
515 #define KEYFRAME_OK_CHECKS(check) \
517 CHECK_TYPE(ok, short); \
519 ok |= KEYFRAME_OK_KEY; \
521 if (ked && (ked->iterflags & KEYFRAME_ITER_INCL_HANDLES)) { \
523 const bool handles_visible = ((ked->iterflags & KEYFRAME_ITER_HANDLES_DEFAULT_INVISIBLE) ? \
524 (BEZT_ISSEL_ANY(bezt)) : \
526 if (handles_visible) { \
528 ok |= KEYFRAME_OK_H1; \
531 ok |= KEYFRAME_OK_H2; \
545 #define KEY_CHECK_OK(_index) IS_EQF(bezt->vec[_index][0], ked->f1)
558 #define KEY_CHECK_OK(_index) ((bezt->vec[_index][0] > ked->f1) && (bezt->vec[_index][0] < ked->f2))
586 #define KEY_CHECK_OK(_index) IS_EQF(bezt->vec[_index][1], ked->f1)
599 #define KEY_CHECK_OK(_index) ((bezt->vec[_index][1] > ked->f1) && (bezt->vec[_index][1] < ked->f2))
613 #define KEY_CHECK_OK(_index) BLI_rctf_isect_pt_v(ked->data, bezt->vec[_index])
648 #define KEY_CHECK_OK(_index) keyframe_region_lasso_test(ked->data, bezt->vec[_index])
671 data->rectf_scaled->xmin = ked->
f1;
672 data->rectf_scaled->xmax = ked->
f2;
676 pt[0] = bezt->
vec[1][0];
696 xy_view[0] = xy_view[0] - data_circle->
mval[0];
697 xy_view[1] = xy_view[1] - data_circle->
mval[1];
710 #define KEY_CHECK_OK(_index) keyframe_region_circle_test(ked->data, bezt->vec[_index])
733 data->rectf_scaled->xmin = ked->
f1;
734 data->rectf_scaled->xmax = ked->
f2;
738 pt[0] = bezt->
vec[1][0];
799 ked->
f1 += bezt->
vec[1][0];
804 ked->
f2 += bezt->
vec[1][1];
863 bezt->
vec[1][0] = (
floorf(bezt->
vec[1][0] / secf + 0.5f) * secf);
891 bezt->
vec[0][1] = bezt->
vec[2][1] = bezt->
vec[1][1];
907 bezt->
vec[1][0] = ked->
f1;
916 bezt->
vec[1][1] = ked->
f1;
948 for (
int i = 0; i < 3; i++) {
960 for (
int i = 0; i < 3; i++) {
1057 #define ENSURE_HANDLES_MATCH(bezt) \
1058 if (bezt->h1 != bezt->h2) { \
1059 if (ELEM(bezt->h1, HD_ALIGN, HD_AUTO, HD_AUTO_ANIM)) { \
1060 bezt->h1 = HD_FREE; \
1062 if (ELEM(bezt->h2, HD_ALIGN, HD_AUTO, HD_AUTO_ANIM)) { \
1063 bezt->h2 = HD_FREE; \
1540 switch (selectmode) {
1566 char *map = ked->
data;
1601 char *map = ked->
data;
1629 else if (i == (fcu->
totvert - 1)) {
1659 const char *map = ked->
data;
typedef float(TangentPoint)[2]
void calchandles_fcurve(struct FCurve *fcu)
float BKE_nla_tweakedit_remap(struct AnimData *adt, float cframe, short mode)
bool BLI_lasso_is_point_inside(const int mcoords[][2], const unsigned int mcoords_len, const int sx, const int sy, const int error_value)
void BLI_addtail(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
MINLINE float len_squared_v2(const float v[2]) ATTR_WARN_UNUSED_RESULT
MINLINE void swap_v3_v3(float a[3], float b[3])
bool BLI_rctf_isect_pt_v(const struct rctf *rect, const float xy[2])
void BLI_rctf_transform_pt_v(const rctf *dst, const rctf *src, float xy_dst[2], const float xy_src[2])
#define BEZT_SEL_ALL(bezt)
#define BEZT_ISSEL_ANY(bezt)
#define BEZT_DESEL_ALL(bezt)
Object is a sort of wrapper for general info.
#define ANIM_UPDATE_DEFAULT
@ ANIMFILTER_DATA_VISIBLE
void(* FcuEditFunc)(struct FCurve *fcu)
@ KEYFRAME_ITER_HANDLES_DEFAULT_INVISIBLE
@ KEYFRAME_ITER_INCL_HANDLES
short(* KeyframeEditFunc)(KeyframeEditData *ked, struct BezTriple *bezt)
NSNotificationCenter * center
Read Guarded memory(de)allocation.
void ANIM_animdata_freelist(ListBase *anim_data)
void ANIM_animdata_update(bAnimContext *ac, ListBase *anim_data)
AnimData * ANIM_nla_mapping_get(bAnimContext *ac, bAnimListElem *ale)
size_t ANIM_animdata_filter(bAnimContext *ac, ListBase *anim_data, eAnimFilter_Flags filter_mode, void *data, eAnimCont_Types datatype)
int ED_markers_find_nearest_marker_time(ListBase *markers, float x)
DO_INLINE void filter(lfVector *V, fmatrix3x3 *S)
static short set_bezier_vector(KeyframeEditData *UNUSED(ked), BezTriple *bezt)
static short ok_bezier_channel_circle(KeyframeEditData *ked, BezTriple *bezt)
static short summary_keyframes_loop(KeyframeEditData *ked, bAnimContext *ac, KeyframeEditFunc key_ok, KeyframeEditFunc key_cb, FcuEditFunc fcu_cb)
static short bezier_isfree(KeyframeEditData *UNUSED(ked), BezTriple *bezt)
static short mirror_bezier_xaxis(KeyframeEditData *UNUSED(ked), BezTriple *bezt)
static void mirror_bezier_xaxis_ex(BezTriple *bezt, const float center)
static short set_bezt_cubic(KeyframeEditData *UNUSED(ked), BezTriple *bezt)
static short set_bezt_bounce(KeyframeEditData *UNUSED(ked), BezTriple *bezt)
static short ok_bezier_framerange(KeyframeEditData *ked, BezTriple *bezt)
static short set_easingtype_easeinout(KeyframeEditData *UNUSED(ked), BezTriple *bezt)
static short set_bezt_quart(KeyframeEditData *UNUSED(ked), BezTriple *bezt)
KeyframeEditFunc ANIM_editkeyframes_mirror(short mode)
short bezt_selmap_flush(KeyframeEditData *ked, BezTriple *bezt)
#define KEY_CHECK_OK(_index)
static short set_keytype_moving_hold(KeyframeEditData *UNUSED(ked), BezTriple *bezt)
KeyframeEditFunc ANIM_editkeyframes_keytype(short mode)
#define ENSURE_HANDLES_MATCH(bezt)
void ANIM_editkeyframes_refresh(bAnimContext *ac)
KeyframeEditFunc ANIM_editkeyframes_easing(short mode)
static short set_bezt_back(KeyframeEditData *UNUSED(ked), BezTriple *bezt)
static short set_bezier_align(KeyframeEditData *UNUSED(ked), BezTriple *bezt)
static short set_keytype_keyframe(KeyframeEditData *UNUSED(ked), BezTriple *bezt)
static short snap_bezier_horizontal(KeyframeEditData *UNUSED(ked), BezTriple *bezt)
static short select_bezier_subtract(KeyframeEditData *ked, BezTriple *bezt)
static short snap_bezier_value(KeyframeEditData *ked, BezTriple *bezt)
KeyframeEditFunc ANIM_editkeyframes_ipo(short mode)
static short mirror_bezier_value(KeyframeEditData *ked, BezTriple *bezt)
static short selmap_build_bezier_more(KeyframeEditData *ked, BezTriple *bezt)
bool keyframe_region_lasso_test(const KeyframeEdit_LassoData *data_lasso, const float xy[2])
static short ok_bezier_region_circle(KeyframeEditData *ked, BezTriple *bezt)
#define KEYFRAME_OK_CHECKS(check)
static short select_bezier_add(KeyframeEditData *ked, BezTriple *bezt)
static short set_bezt_bezier(KeyframeEditData *UNUSED(ked), BezTriple *bezt)
static short snap_bezier_nearmarker(KeyframeEditData *ked, BezTriple *bezt)
static short scene_keyframes_loop(KeyframeEditData *ked, bDopeSheet *ads, Scene *sce, KeyframeEditFunc key_ok, KeyframeEditFunc key_cb, FcuEditFunc fcu_cb)
static short set_bezt_linear(KeyframeEditData *UNUSED(ked), BezTriple *bezt)
static short set_easingtype_easein(KeyframeEditData *UNUSED(ked), BezTriple *bezt)
static short set_bezier_auto_clamped(KeyframeEditData *UNUSED(ked), BezTriple *bezt)
static short snap_bezier_time(KeyframeEditData *ked, BezTriple *bezt)
static short set_keytype_jitter(KeyframeEditData *UNUSED(ked), BezTriple *bezt)
static short set_keytype_extreme(KeyframeEditData *UNUSED(ked), BezTriple *bezt)
static short set_keytype_breakdown(KeyframeEditData *UNUSED(ked), BezTriple *bezt)
static short set_bezt_elastic(KeyframeEditData *UNUSED(ked), BezTriple *bezt)
static short set_bezt_quad(KeyframeEditData *UNUSED(ked), BezTriple *bezt)
static short select_bezier_invert(KeyframeEditData *UNUSED(ked), BezTriple *bezt)
KeyframeEditFunc ANIM_editkeyframes_select(short selectmode)
static short ok_bezier_frame(KeyframeEditData *ked, BezTriple *bezt)
static short set_easingtype_easeauto(KeyframeEditData *UNUSED(ked), BezTriple *bezt)
static short set_bezt_expo(KeyframeEditData *UNUSED(ked), BezTriple *bezt)
static short set_bezier_free(KeyframeEditData *UNUSED(ked), BezTriple *bezt)
short bezt_to_cfraelem(KeyframeEditData *ked, BezTriple *bezt)
static short snap_bezier_cframe(KeyframeEditData *ked, BezTriple *bezt)
KeyframeEditFunc ANIM_editkeyframes_buildselmap(short mode)
short ANIM_animchanneldata_keyframes_loop(KeyframeEditData *ked, bDopeSheet *ads, void *data, int keytype, KeyframeEditFunc key_ok, KeyframeEditFunc key_cb, FcuEditFunc fcu_cb)
static short agrp_keyframes_loop(KeyframeEditData *ked, bActionGroup *agrp, KeyframeEditFunc key_ok, KeyframeEditFunc key_cb, FcuEditFunc fcu_cb)
static short mirror_bezier_yaxis(KeyframeEditData *UNUSED(ked), BezTriple *bezt)
static short mirror_bezier_cframe(KeyframeEditData *ked, BezTriple *bezt)
static short set_bezier_auto(KeyframeEditData *UNUSED(ked), BezTriple *bezt)
short ANIM_animchannel_keyframes_loop(KeyframeEditData *ked, bDopeSheet *ads, bAnimListElem *ale, KeyframeEditFunc key_ok, KeyframeEditFunc key_cb, FcuEditFunc fcu_cb)
static void mirror_bezier_yaxis_ex(BezTriple *bezt, const float center)
bool keyframe_region_circle_test(const KeyframeEdit_CircleData *data_circle, const float xy[2])
void bezt_remap_times(KeyframeEditData *ked, BezTriple *bezt)
static short set_bezt_quint(KeyframeEditData *UNUSED(ked), BezTriple *bezt)
short ANIM_fcurve_keyframes_loop(KeyframeEditData *ked, FCurve *fcu, KeyframeEditFunc key_ok, KeyframeEditFunc key_cb, FcuEditFunc fcu_cb)
static short set_bezt_sine(KeyframeEditData *UNUSED(ked), BezTriple *bezt)
static short set_bezt_circle(KeyframeEditData *UNUSED(ked), BezTriple *bezt)
KeyframeEditFunc ANIM_editkeyframes_ok(short mode)
KeyframeEditFunc ANIM_editkeyframes_snap(short mode)
static short act_keyframes_loop(KeyframeEditData *ked, bAction *act, KeyframeEditFunc key_ok, KeyframeEditFunc key_cb, FcuEditFunc fcu_cb)
static short ob_keyframes_loop(KeyframeEditData *ked, bDopeSheet *ads, Object *ob, KeyframeEditFunc key_ok, KeyframeEditFunc key_cb, FcuEditFunc fcu_cb)
static short snap_bezier_nearestsec(KeyframeEditData *ked, BezTriple *bezt)
static short mirror_bezier_marker(KeyframeEditData *ked, BezTriple *bezt)
static short set_bezt_constant(KeyframeEditData *UNUSED(ked), BezTriple *bezt)
static short selmap_build_bezier_less(KeyframeEditData *ked, BezTriple *bezt)
static short ok_bezier_region(KeyframeEditData *ked, BezTriple *bezt)
void ANIM_animdata_keyframe_callback(bAnimContext *ac, eAnimFilter_Flags filter, KeyframeEditFunc callback_fn)
short bezt_calc_average(KeyframeEditData *ked, BezTriple *bezt)
static short ok_bezier_selected(KeyframeEditData *UNUSED(ked), BezTriple *bezt)
static short ok_bezier_valuerange(KeyframeEditData *ked, BezTriple *bezt)
static short mirror_bezier_time(KeyframeEditData *ked, BezTriple *bezt)
static short ok_bezier_channel_lasso(KeyframeEditData *ked, BezTriple *bezt)
static short snap_bezier_nearest(KeyframeEditData *UNUSED(ked), BezTriple *bezt)
static short set_easingtype_easeout(KeyframeEditData *UNUSED(ked), BezTriple *bezt)
static short ok_bezier_value(KeyframeEditData *ked, BezTriple *bezt)
static short ok_bezier_region_lasso(KeyframeEditData *ked, BezTriple *bezt)
KeyframeEditFunc ANIM_editkeyframes_handles(short mode)
void *(* MEM_callocN)(size_t len, const char *str)
IMETHOD Vector diff(const Vector &a, const Vector &b, double dt=1)
eKeyframeIterFlags iterflags
struct bAnimListElem * next