diff options
Diffstat (limited to 'source/blender/editors/include/ED_keyframes_edit.h')
-rw-r--r-- | source/blender/editors/include/ED_keyframes_edit.h | 44 |
1 files changed, 36 insertions, 8 deletions
diff --git a/source/blender/editors/include/ED_keyframes_edit.h b/source/blender/editors/include/ED_keyframes_edit.h index 29f92fff001..60f2526191c 100644 --- a/source/blender/editors/include/ED_keyframes_edit.h +++ b/source/blender/editors/include/ED_keyframes_edit.h @@ -60,10 +60,14 @@ typedef enum eEditKeyframes_Validate { /* select modes */ typedef enum eEditKeyframes_Select { + /* SELECT_SUBTRACT for all, followed by SELECT_ADD for some */ SELECT_REPLACE = (1<<0), + /* add ok keyframes to selection */ SELECT_ADD = (1<<1), + /* remove ok keyframes from selection */ SELECT_SUBTRACT = (1<<2), - SELECT_INVERT = (1<<4), + /* flip ok status of keyframes based on key status */ + SELECT_INVERT = (1<<3), } eEditKeyframes_Select; /* "selection map" building modes */ @@ -94,7 +98,7 @@ typedef enum eEditKeyframes_Mirror { /* ************************************************ */ /* Non-Destuctive Editing API (keyframes_edit.c) */ -/* --- Generic Properties for Bezier Edit Tools ----- */ +/* --- Generic Properties for Keyframe Edit Tools ----- */ typedef struct KeyframeEditData { /* generic properties/data access */ @@ -107,6 +111,10 @@ typedef struct KeyframeEditData { /* current iteration data */ struct FCurve *fcu; /* F-Curve that is being iterated over */ int curIndex; /* index of current keyframe being iterated over */ + + /* flags */ + short curflags; /* current flags for the keyframe we're reached in the iteration process */ + short iterflags; /* settings for iteration process */ // XXX: unused... } KeyframeEditData; /* ------- Function Pointer Typedefs ---------------- */ @@ -116,27 +124,47 @@ typedef void (*FcuEditFunc)(struct FCurve *fcu); /* callback function that operates on the given BezTriple */ typedef short (*KeyframeEditFunc)(KeyframeEditData *ked, struct BezTriple *bezt); +/* ---------- Defines for 'OK' polls ----------------- */ + +/* which verts of a keyframe is active (after polling) */ +typedef enum eKeyframeVertOk { + /* 'key' itself is ok */ + KEYFRAME_OK_KEY = (1<<0), + /* 'handle 1' is ok */ + KEYFRAME_OK_H1 = (1<<1), + /* 'handle 2' is ok */ + KEYFRAME_OK_H2 = (1<<2), + /* all flags */ + KEYFRAME_OK_ALL = (KEYFRAME_OK_KEY|KEYFRAME_OK_H1|KEYFRAME_OK_H2) +} eKeyframeVertOk; + +/* Flags for use during iteration */ +typedef enum eKeyframeIterFlags { + /* consider handles in addition to key itself */ + KEYFRAME_ITER_INCL_HANDLES = (1<<0), +} eKeyframeIterFlags; + /* ------- Custom Data Type Defines ------------------ */ /* Custom data for remapping one range to another in a fixed way */ -typedef struct BeztEditCD_Remap { +typedef struct KeyframeEditCD_Remap { float oldMin, oldMax; /* old range */ float newMin, newMax; /* new range */ -} BeztEditCD_Remap; +} KeyframeEditCD_Remap; /* ---------------- Looping API --------------------- */ /* functions for looping over keyframes */ /* function for working with F-Curve data only (i.e. when filters have been chosen to explicitly use this) */ -short ANIM_fcurve_keyframes_loop(KeyframeEditData *ked, struct FCurve *fcu, KeyframeEditFunc bezt_ok, KeyframeEditFunc bezt_cb, FcuEditFunc fcu_cb); +short ANIM_fcurve_keyframes_loop(KeyframeEditData *ked, struct FCurve *fcu, KeyframeEditFunc key_ok, KeyframeEditFunc key_cb, FcuEditFunc fcu_cb); /* function for working with any type (i.e. one of the known types) of animation channel * - filterflag is bDopeSheet->flag (DOPESHEET_FILTERFLAG) */ -short ANIM_animchannel_keyframes_loop(KeyframeEditData *ked, struct bAnimListElem *ale, KeyframeEditFunc bezt_ok, KeyframeEditFunc bezt_cb, FcuEditFunc fcu_cb, int filterflag); +short ANIM_animchannel_keyframes_loop(KeyframeEditData *ked, struct bAnimListElem *ale, KeyframeEditFunc key_ok, KeyframeEditFunc key_cb, FcuEditFunc fcu_cb, int filterflag); /* same as above, except bAnimListElem wrapper is not needed... * - keytype is eAnim_KeyType */ -short ANIM_animchanneldata_keyframes_loop(KeyframeEditData *ked, void *data, int keytype, KeyframeEditFunc bezt_ok, KeyframeEditFunc bezt_cb, FcuEditFunc fcu_cb, int filterflag); +short ANIM_animchanneldata_keyframes_loop(KeyframeEditData *ked, void *data, int keytype, KeyframeEditFunc key_ok, KeyframeEditFunc key_cb, FcuEditFunc fcu_cb, int filterflag); /* functions for making sure all keyframes are in good order */ void ANIM_editkeyframes_refresh(struct bAnimContext *ac); @@ -175,7 +203,7 @@ short bezt_calc_average(KeyframeEditData *ked, struct BezTriple *bezt); short bezt_to_cfraelem(KeyframeEditData *ked, struct BezTriple *bezt); /* used to remap times from one range to another - * requires: ked->custom = BeztEditCD_Remap + * requires: ked->custom = KeyframeEditCD_Remap */ void bezt_remap_times(KeyframeEditData *ked, struct BezTriple *bezt); |