Blender V4.3
ED_anim_api.hh File Reference
#include "BLI_sys_types.h"
#include "BLI_utildefines.h"
#include "DNA_screen_types.h"
#include "DNA_space_types.h"
#include <optional>

Go to the source code of this file.

Classes

struct  bAnimContext
 
struct  bAnimListElem
 
struct  bAnimChannelType
 

Macros

Flag Checking Macros
#define SEL_SCEC(sce)   (CHECK_TYPE_INLINE(sce, Scene *), ((sce->flag & SCE_DS_SELECTED)))
 
#define EXPANDED_SCEC(sce)   (CHECK_TYPE_INLINE(sce, Scene *), ((sce->flag & SCE_DS_COLLAPSED) == 0))
 
#define FILTER_WOR_SCED(wo)   (CHECK_TYPE_INLINE(wo, World *), (wo->flag & WO_DS_EXPAND))
 
#define FILTER_LS_SCED(linestyle)   ((linestyle->flag & LS_DS_EXPAND))
 
#define SEL_OBJC(base)   (CHECK_TYPE_INLINE(base, Base *), ((base->flag & SELECT)))
 
#define EXPANDED_OBJC(ob)    (CHECK_TYPE_INLINE(ob, Object *), (((ob)->nlaflag & OB_ADS_COLLAPSED) == 0))
 
#define FILTER_SKE_OBJD(key)   (CHECK_TYPE_INLINE(key, Key *), ((key->flag & KEY_DS_EXPAND)))
 
#define FILTER_MAT_OBJD(ma)   (CHECK_TYPE_INLINE(ma, Material *), ((ma->flag & MA_DS_EXPAND)))
 
#define FILTER_LAM_OBJD(la)   (CHECK_TYPE_INLINE(la, Light *), ((la->flag & LA_DS_EXPAND)))
 
#define FILTER_CAM_OBJD(ca)   (CHECK_TYPE_INLINE(ca, Camera *), ((ca->flag & CAM_DS_EXPAND)))
 
#define FILTER_CACHEFILE_OBJD(cf)    (CHECK_TYPE_INLINE(cf, CacheFile *), (((cf)->flag & CACHEFILE_DS_EXPAND)))
 
#define FILTER_CUR_OBJD(cu)   (CHECK_TYPE_INLINE(cu, Curve *), ((cu->flag & CU_DS_EXPAND)))
 
#define FILTER_PART_OBJD(part)    (CHECK_TYPE_INLINE(part, ParticleSettings *), (((part)->flag & PART_DS_EXPAND)))
 
#define FILTER_MBALL_OBJD(mb)   (CHECK_TYPE_INLINE(mb, MetaBall *), ((mb->flag2 & MB_DS_EXPAND)))
 
#define FILTER_ARM_OBJD(arm)   (CHECK_TYPE_INLINE(arm, bArmature *), ((arm->flag & ARM_DS_EXPAND)))
 
#define FILTER_MESH_OBJD(me)   (CHECK_TYPE_INLINE(me, Mesh *), ((me->flag & ME_DS_EXPAND)))
 
#define FILTER_LATTICE_OBJD(lt)   (CHECK_TYPE_INLINE(lt, Lattice *), ((lt->flag & LT_DS_EXPAND)))
 
#define FILTER_SPK_OBJD(spk)   (CHECK_TYPE_INLINE(spk, Speaker *), ((spk->flag & SPK_DS_EXPAND)))
 
#define FILTER_CURVES_OBJD(ha)   (CHECK_TYPE_INLINE(ha, Curves *), ((ha->flag & HA_DS_EXPAND)))
 
#define FILTER_POINTS_OBJD(pt)   (CHECK_TYPE_INLINE(pt, PointCloud *), ((pt->flag & PT_DS_EXPAND)))
 
#define FILTER_VOLUME_OBJD(vo)   (CHECK_TYPE_INLINE(vo, Volume *), ((vo->flag & VO_DS_EXPAND)))
 
#define FILTER_NTREE_DATA(ntree)    (CHECK_TYPE_INLINE(ntree, bNodeTree *), (((ntree)->flag & NTREE_DS_EXPAND)))
 
#define FILTER_TEX_DATA(tex)   (CHECK_TYPE_INLINE(tex, Tex *), ((tex->flag & TEX_DS_EXPAND)))
 
#define SEL_ACTC(actc)   ((actc->flag & ACT_SELECTED))
 
#define EXPANDED_ACTC(actc)   ((actc->flag & ACT_COLLAPSED) == 0)
 
#define EXPANDED_DRVD(adt)   ((adt->flag & ADT_DRIVERS_COLLAPSED) == 0)
 
#define EXPANDED_ADT(adt)   ((adt->flag & ADT_UI_EXPANDED) != 0)
 
#define EDITABLE_AGRP(agrp)   (((agrp)->flag & AGRP_PROTECTED) == 0)
 
#define EXPANDED_AGRP(ac, agrp)
 
#define SEL_AGRP(agrp)   (((agrp)->flag & AGRP_SELECTED) || ((agrp)->flag & AGRP_ACTIVE))
 
#define EDITABLE_FCU(fcu)   (((fcu)->flag & FCURVE_PROTECTED) == 0)
 
#define SEL_FCU(fcu)   ((fcu)->flag & FCURVE_SELECTED)
 
#define EDITABLE_SHAPEKEY(kb)   ((kb->flag & KEYBLOCK_LOCKED) == 0)
 
#define SEL_SHAPEKEY(kb)   (kb->flag & KEYBLOCK_SEL)
 
#define EXPANDED_GPD(gpd)   (gpd->flag & GP_DATA_EXPAND)
 
#define EDITABLE_GPL(gpl)   ((gpl->flag & GP_LAYER_LOCKED) == 0)
 
#define SEL_GPL(gpl)   (gpl->flag & GP_LAYER_SELECT)
 
#define EXPANDED_MASK(mask)   (mask->flag & MASK_ANIMF_EXPAND)
 
#define EDITABLE_MASK(masklay)   ((masklay->flag & MASK_LAYERFLAG_LOCKED) == 0)
 
#define SEL_MASKLAY(masklay)   (masklay->flag & SELECT)
 
#define SEL_NLT(nlt)   (nlt->flag & NLATRACK_SELECTED)
 
#define EDITABLE_NLT(nlt)   ((nlt->flag & NLATRACK_PROTECTED) == 0)
 
#define EXPANDED_MCLIP(clip)   (clip->flag & MCLIP_DATA_EXPAND)
 
#define EXPANDED_PALETTE(palette)   (palette->flag & PALETTE_DATA_EXPAND)
 
#define SEL_ANIMDATA(adt)   (adt->flag & ADT_UI_SELECTED)
 
NLA Track Defines
#define NLATRACK_FIRST_TOP(ac)    (UI_view2d_scale_get_y(&(ac)->region->v2d) * -UI_TIME_SCRUB_MARGIN_Y - NLATRACK_SKIP)
 
#define NLATRACK_HEIGHT(snla)
 
#define NLATRACK_SKIP   (0.1f * U.widget_unit)
 
#define NLATRACK_STEP(snla)   (NLATRACK_HEIGHT(snla) + NLATRACK_SKIP)
 
#define NLATRACK_TOT_HEIGHT(ac, item_amount)    (-NLATRACK_FIRST_TOP(ac) + NLATRACK_STEP(((SpaceNla *)(ac)->sl)) * (item_amount + 1))
 
#define NLATRACK_NAMEWIDTH   (10 * U.widget_unit)
 
Utility macros
#define ACHANNEL_SET_FLAG(channel, smode, sflag)
 
#define ACHANNEL_SET_FLAG_NEG(channel, smode, sflag)
 

Enumerations

Context
enum  eAnimCont_Types {
  ANIMCONT_NONE = 0 , ANIMCONT_ACTION = 1 , ANIMCONT_SHAPEKEY = 2 , ANIMCONT_GPENCIL = 3 ,
  ANIMCONT_DOPESHEET = 4 , ANIMCONT_FCURVES = 5 , ANIMCONT_DRIVERS = 6 , ANIMCONT_NLA = 7 ,
  ANIMCONT_CHANNEL = 8 , ANIMCONT_MASK = 9 , ANIMCONT_TIMELINE = 10
}
 
Drawing TypeInfo
enum  eAnimChannel_Role { ACHANNEL_ROLE_EXPANDER = -1 , ACHANNEL_ROLE_CHANNEL = 1 }
 
enum  eAnimChannels_SetFlag {
  ACHANNEL_SETFLAG_CLEAR = 0 , ACHANNEL_SETFLAG_ADD = 1 , ACHANNEL_SETFLAG_INVERT = 2 , ACHANNEL_SETFLAG_TOGGLE = 3 ,
  ACHANNEL_SETFLAG_EXTEND_RANGE = 4
}
 
enum  eAnimChannel_Settings {
  ACHANNEL_SETTING_SELECT = 0 , ACHANNEL_SETTING_PROTECT = 1 , ACHANNEL_SETTING_MUTE = 2 , ACHANNEL_SETTING_EXPAND = 3 ,
  ACHANNEL_SETTING_VISIBLE = 4 , ACHANNEL_SETTING_SOLO = 5 , ACHANNEL_SETTING_PINNED = 6 , ACHANNEL_SETTING_MOD_OFF = 7 ,
  ACHANNEL_SETTING_ALWAYS_VISIBLE = 8
}
 

Functions

Public API
size_t ANIM_animdata_filter (bAnimContext *ac, ListBase *anim_data, eAnimFilter_Flags filter_mode, void *data, eAnimCont_Types datatype)
 
bool ANIM_animdata_get_context (const bContext *C, bAnimContext *ac)
 
bool ANIM_animdata_context_getdata (bAnimContext *ac)
 
void ANIM_animdata_update (bAnimContext *ac, ListBase *anim_data)
 
void ANIM_animdata_freelist (ListBase *anim_data)
 
bool ANIM_animdata_can_have_greasepencil (const eAnimCont_Types type)
 
Channel dimensions API
float ANIM_UI_get_keyframe_scale_factor ()
 
float ANIM_UI_get_channel_height ()
 
float ANIM_UI_get_channel_skip ()
 
float ANIM_UI_get_first_channel_top (View2D *v2d)
 
float ANIM_UI_get_channel_step ()
 
float ANIM_UI_get_channels_total_height (View2D *v2d, int item_count)
 
float ANIM_UI_get_channel_name_width ()
 
float ANIM_UI_get_channel_button_width ()
 
Drawing API
const bAnimChannelTypeANIM_channel_get_typeinfo (bAnimListElem *ale)
 
void ANIM_channel_debug_print_info (bAnimListElem *ale, short indent_level)
 
bActionANIM_channel_action_get (const bAnimListElem *ale)
 
void ANIM_channel_draw (bAnimContext *ac, bAnimListElem *ale, float yminc, float ymaxc, size_t channel_index)
 
void ANIM_channel_draw_widgets (const bContext *C, bAnimContext *ac, bAnimListElem *ale, uiBlock *block, const rctf *rect, size_t channel_index)
 
Editing API
short ANIM_channel_setting_get (bAnimContext *ac, bAnimListElem *ale, eAnimChannel_Settings setting)
 
void ANIM_channel_setting_set (bAnimContext *ac, bAnimListElem *ale, eAnimChannel_Settings setting, eAnimChannels_SetFlag mode)
 
void ANIM_flush_setting_anim_channels (bAnimContext *ac, ListBase *anim_data, bAnimListElem *ale_setting, eAnimChannel_Settings setting, eAnimChannels_SetFlag mode)
 
void ANIM_frame_channel_y_extents (bContext *C, bAnimContext *ac)
 
void ANIM_anim_channels_select_set (bAnimContext *ac, eAnimChannels_SetFlag sel)
 
void ANIM_anim_channels_select_toggle (bAnimContext *ac)
 
void ANIM_set_active_channel (bAnimContext *ac, void *data, eAnimCont_Types datatype, eAnimFilter_Flags filter, void *channel_data, eAnim_ChannelType channel_type)
 
bool ANIM_is_active_channel (bAnimListElem *ale)
 
void ANIM_deselect_keys_in_animation_editors (bContext *C)
 
Preview Range Drawing

Main call to draw preview range curtains.

void ANIM_draw_previewrange (const bContext *C, View2D *v2d, int end_frame_width)
 
Frame Range Drawing

Main call to draw normal frame range indicators.

void ANIM_draw_framerange (Scene *scene, View2D *v2d)
 
void ANIM_draw_action_framerange (AnimData *adt, bAction *action, View2D *v2d, float ymin, float ymax)
 
Copy/Paste Buffer
void ANIM_fmodifiers_copybuf_free ()
 
bool ANIM_fmodifiers_copy_to_buf (ListBase *modifiers, bool active)
 
bool ANIM_fmodifiers_paste_from_buf (ListBase *modifiers, bool replace, FCurve *curve)
 
Animation F-Curves <-> Icons/Names Mapping
std::optional< intgetname_anim_fcurve (char *name, ID *id, FCurve *fcu)
 
std::string getname_anim_fcurve_for_slot (Main &bmain, const blender::animrig::Slot &slot, FCurve &fcurve)
 
void getcolor_fcurve_rainbow (int cur, int tot, float out[3])
 
NLA Drawing
Note
Technically, this is not in the animation module (it's in space_nla) but these are sometimes needed by various animation API's.
void nla_action_get_color (AnimData *adt, bAction *act, float color[4])
 
NLA-Mapping
AnimDataANIM_nla_mapping_get (bAnimContext *ac, bAnimListElem *ale)
 
void ANIM_nla_mapping_apply_fcurve (AnimData *adt, FCurve *fcu, bool restore, bool only_keys)
 
void ED_nla_postop_refresh (bAnimContext *ac)
 
Animation Updates
void ANIM_id_update (Main *bmain, ID *id)
 
void ANIM_list_elem_update (Main *bmain, Scene *scene, bAnimListElem *ale)
 
void ANIM_sync_animchannels_to_data (const bContext *C)
 
void ANIM_center_frame (bContext *C, int smooth_viewtx)
 
rctf ANIM_frame_range_view2d_add_xmargin (const View2D &view_2d, rctf view_rect)
 
Operators
void ED_operatortypes_animchannels ()
 
void ED_keymap_animchannels (wmKeyConfig *keyconf)
 
void ED_operatortypes_anim ()
 
void ED_keymap_anim (wmKeyConfig *keyconf)
 
void ED_operatormacros_graph ()
 
void ED_operatormacros_action ()
 
void ED_operatormacros_nla ()
 

Channels

#define ANIM_UPDATE_DEFAULT   (ANIM_UPDATE_DEPS | ANIM_UPDATE_ORDER | ANIM_UPDATE_HANDLES)
 
#define ANIM_UPDATE_DEFAULT_NOHANDLES   (ANIM_UPDATE_DEFAULT & ~ANIM_UPDATE_HANDLES)
 
enum  eAnim_ChannelType {
  ANIMTYPE_NONE = 0 , ANIMTYPE_ANIMDATA , ANIMTYPE_SPECIALDATA__UNUSED , ANIMTYPE_SUMMARY ,
  ANIMTYPE_SCENE , ANIMTYPE_OBJECT , ANIMTYPE_GROUP , ANIMTYPE_FCURVE ,
  ANIMTYPE_NLACONTROLS , ANIMTYPE_NLACURVE , ANIMTYPE_FILLACT_LAYERED , ANIMTYPE_ACTION_SLOT ,
  ANIMTYPE_FILLACTD , ANIMTYPE_FILLDRIVERS , ANIMTYPE_DSMAT , ANIMTYPE_DSLAM ,
  ANIMTYPE_DSCAM , ANIMTYPE_DSCACHEFILE , ANIMTYPE_DSCUR , ANIMTYPE_DSSKEY ,
  ANIMTYPE_DSWOR , ANIMTYPE_DSNTREE , ANIMTYPE_DSPART , ANIMTYPE_DSMBALL ,
  ANIMTYPE_DSARM , ANIMTYPE_DSMESH , ANIMTYPE_DSTEX , ANIMTYPE_DSLAT ,
  ANIMTYPE_DSLINESTYLE , ANIMTYPE_DSSPK , ANIMTYPE_DSGPENCIL , ANIMTYPE_DSMCLIP ,
  ANIMTYPE_DSHAIR , ANIMTYPE_DSPOINTCLOUD , ANIMTYPE_DSVOLUME , ANIMTYPE_SHAPEKEY ,
  ANIMTYPE_GPDATABLOCK , ANIMTYPE_GPLAYER , ANIMTYPE_GREASE_PENCIL_DATABLOCK , ANIMTYPE_GREASE_PENCIL_LAYER_GROUP ,
  ANIMTYPE_GREASE_PENCIL_LAYER , ANIMTYPE_MASKDATABLOCK , ANIMTYPE_MASKLAYER , ANIMTYPE_NLATRACK ,
  ANIMTYPE_NLAACTION , ANIMTYPE_PALETTE , ANIMTYPE_NUM_TYPES
}
 
enum  eAnim_KeyType {
  ALE_NONE = 0 , ALE_FCURVE , ALE_GPFRAME , ALE_MASKLAY ,
  ALE_NLASTRIP , ALE_ALL , ALE_SCE , ALE_OB ,
  ALE_ACT , ALE_GROUP , ALE_ACTION_LAYERED , ALE_ACTION_SLOT ,
  ALE_GREASE_PENCIL_CEL , ALE_GREASE_PENCIL_DATA , ALE_GREASE_PENCIL_GROUP
}
 
enum  eAnim_Update_Flags { ANIM_UPDATE_DEPS = (1 << 0) , ANIM_UPDATE_ORDER = (1 << 1) , ANIM_UPDATE_HANDLES = (1 << 2) }
 
 ENUM_OPERATORS (eAnim_Update_Flags, ANIM_UPDATE_HANDLES)
 

Filtering

enum  eAnimFilter_Flags {
  ANIMFILTER_DATA_VISIBLE = (1 << 0) , ANIMFILTER_LIST_VISIBLE = (1 << 1) , ANIMFILTER_CURVE_VISIBLE = (1 << 2) , ANIMFILTER_LIST_CHANNELS = (1 << 3) ,
  ANIMFILTER_ACTIVE = (1 << 4) , ANIMFILTER_ACTGROUPED = (1 << 5) , ANIMFILTER_SEL = (1 << 6) , ANIMFILTER_UNSEL = (1 << 7) ,
  ANIMFILTER_FOREDIT = (1 << 8) , ANIMFILTER_SELEDIT = (1 << 9) , ANIMFILTER_ANIMDATA = (1 << 10) , ANIMFILTER_NODUPLIS = (1 << 11) ,
  ANIMFILTER_FCURVESONLY = (1 << 12) , ANIMFILTER_TMP_PEEK = (1 << 30) , ANIMFILTER_TMP_IGNORE_ONLYSEL = (1u << 31)
}
 
 ENUM_OPERATORS (eAnimFilter_Flags, ANIMFILTER_TMP_IGNORE_ONLYSEL)
 

Current Frame Drawing

Main call to draw current-frame indicator in an Animation Editor.

enum  eAnimEditDraw_CurrentFrame { DRAWCFRA_UNIT_SECONDS = (1 << 0) , DRAWCFRA_WIDE = (1 << 1) }
 
void ANIM_draw_cfra (const bContext *C, View2D *v2d, short flag)
 

Unit Conversion Mappings

enum  eAnimUnitConv_Flags {
  ANIM_UNITCONV_NONE = 0 , ANIM_UNITCONV_RESTORE = (1 << 0) , ANIM_UNITCONV_ONLYKEYS = (1 << 1) , ANIM_UNITCONV_ONLYSEL = (1 << 2) ,
  ANIM_UNITCONV_SELVERTS = (1 << 3) , ANIM_UNITCONV_NORMALIZE = (1 << 5) , ANIM_UNITCONV_NORMALIZE_FREEZE = (1 << 6)
}
 
short ANIM_get_normalization_flags (SpaceLink *space_link)
 
float ANIM_unit_mapping_get_factor (Scene *scene, ID *id, FCurve *fcu, short flag, float *r_offset)
 

Animation Editor Exports

enum  eAnimvizCalcRange { ANIMVIZ_CALC_RANGE_CURRENT_FRAME , ANIMVIZ_CALC_RANGE_CHANGED , ANIMVIZ_CALC_RANGE_FULL }
 
AnimDataED_actedit_animdata_from_context (const bContext *C, ID **r_adt_id_owner)
 
void ED_animedit_unlink_action (bContext *C, ID *id, AnimData *adt, bAction *act, ReportList *reports, bool force_delete)
 
void ED_drivers_editor_init (bContext *C, ScrArea *area)
 
Depsgraph * animviz_depsgraph_build (Main *bmain, Scene *scene, ViewLayer *view_layer, ListBase *targets)
 
void animviz_calc_motionpaths (Depsgraph *depsgraph, Main *bmain, Scene *scene, ListBase *targets, eAnimvizCalcRange range, bool restore)
 
void animviz_motionpath_compute_range (Object *ob, Scene *scene)
 
void animviz_get_object_motionpaths (Object *ob, ListBase *targets)
 

UI Panel Drawing

using PanelTypePollFn = bool (*)(const bContext *C, PanelType *pt)
 
using uiListPanelIDFromDataFunc = void (*)(void *data_link, char *r_idname)
 
bool ANIM_nla_context_track_ptr (const bContext *C, PointerRNA *r_ptr)
 
bool ANIM_nla_context_strip_ptr (const bContext *C, PointerRNA *r_ptr)
 
NlaTrackANIM_nla_context_track (const bContext *C)
 
NlaStripANIM_nla_context_strip (const bContext *C)
 
FCurveANIM_graph_context_fcurve (const bContext *C)
 
void ANIM_fmodifier_panels (const bContext *C, ID *owner_id, ListBase *fmodifiers, uiListPanelIDFromDataFunc panel_id_fn)
 
void ANIM_modifier_panels_register_graph_and_NLA (ARegionType *region_type, const char *modifier_panel_prefix, PanelTypePollFn poll_function)
 
void ANIM_modifier_panels_register_graph_only (ARegionType *region_type, const char *modifier_panel_prefix, PanelTypePollFn poll_function)
 

Macro Definition Documentation

◆ ACHANNEL_SET_FLAG

#define ACHANNEL_SET_FLAG ( channel,
smode,
sflag )
Value:
{ \
if (smode == ACHANNEL_SETFLAG_INVERT) { \
(channel)->flag ^= (sflag); \
} \
else if (smode == ACHANNEL_SETFLAG_ADD) { \
(channel)->flag |= (sflag); \
} \
else { \
(channel)->flag &= ~(sflag); \
} \
} \
((void)0)
@ ACHANNEL_SETFLAG_ADD
@ ACHANNEL_SETFLAG_INVERT
uint8_t flag
Definition wm_window.cc:138

Set/Clear/Toggle macro.

Parameters
channelChannel with a 'flag' member that we're setting.
smode0=clear, 1=set, 2=invert.
sflagbit-flag to set.

Definition at line 1037 of file ED_anim_api.hh.

Referenced by anim_channels_select_set(), ANIM_set_active_channel(), box_select_anim_channels(), box_select_nla_strips(), deselect_nla_strips(), mouse_nla_strips(), and nlaedit_select_leftright().

◆ ACHANNEL_SET_FLAG_NEG

#define ACHANNEL_SET_FLAG_NEG ( channel,
smode,
sflag )
Value:
{ \
if (smode == ACHANNEL_SETFLAG_INVERT) { \
(channel)->flag ^= (sflag); \
} \
else if (smode == ACHANNEL_SETFLAG_ADD) { \
(channel)->flag &= ~(sflag); \
} \
else { \
(channel)->flag |= (sflag); \
} \
} \
((void)0)

Set/Clear/Toggle macro, where the flag is negative.

Parameters
channelchannel with a 'flag' member that we're setting.
smode0=clear, 1=set, 2=invert.
sflagBit-flag to set.

Definition at line 1057 of file ED_anim_api.hh.

◆ ANIM_UPDATE_DEFAULT

◆ ANIM_UPDATE_DEFAULT_NOHANDLES

#define ANIM_UPDATE_DEFAULT_NOHANDLES   (ANIM_UPDATE_DEFAULT & ~ANIM_UPDATE_HANDLES)

Definition at line 248 of file ED_anim_api.hh.

Referenced by seteasing_graph_keys(), and setipo_graph_keys().

◆ EDITABLE_AGRP

#define EDITABLE_AGRP ( agrp)    (((agrp)->flag & AGRP_PROTECTED) == 0)

Action Channel Group.

Definition at line 449 of file ED_anim_api.hh.

Referenced by animfilter_act_group().

◆ EDITABLE_FCU

#define EDITABLE_FCU ( fcu)    (((fcu)->flag & FCURVE_PROTECTED) == 0)

F-Curve Channels.

Definition at line 455 of file ED_anim_api.hh.

Referenced by animfilter_fcurve_next().

◆ EDITABLE_GPL

#define EDITABLE_GPL ( gpl)    ((gpl->flag & GP_LAYER_LOCKED) == 0)

Grease Pencil Layer settings.

Definition at line 466 of file ED_anim_api.hh.

Referenced by animdata_filter_gpencil_layers_data_legacy().

◆ EDITABLE_MASK

#define EDITABLE_MASK ( masklay)    ((masklay->flag & MASK_LAYERFLAG_LOCKED) == 0)

Grease Pencil Layer settings.

Definition at line 473 of file ED_anim_api.hh.

Referenced by animdata_filter_mask_data().

◆ EDITABLE_NLT

#define EDITABLE_NLT ( nlt)    ((nlt->flag & NLATRACK_PROTECTED) == 0)

Definition at line 478 of file ED_anim_api.hh.

Referenced by animfilter_nla().

◆ EDITABLE_SHAPEKEY

#define EDITABLE_SHAPEKEY ( kb)    ((kb->flag & KEYBLOCK_LOCKED) == 0)

Definition at line 459 of file ED_anim_api.hh.

Referenced by animdata_filter_shapekey().

◆ EXPANDED_ACTC

#define EXPANDED_ACTC ( actc)    ((actc->flag & ACT_COLLAPSED) == 0)

Definition at line 442 of file ED_anim_api.hh.

Referenced by animdata_filter_ds_obanim(), and animdata_filter_ds_scene().

◆ EXPANDED_ADT

#define EXPANDED_ADT ( adt)    ((adt->flag & ADT_UI_EXPANDED) != 0)

Definition at line 445 of file ED_anim_api.hh.

Referenced by animdata_filter_ds_obanim(), and animdata_filter_ds_scene().

◆ EXPANDED_AGRP

#define EXPANDED_AGRP ( ac,
agrp )
Value:
(((!(ac) || ((ac)->spacetype != SPACE_GRAPH)) && ((agrp)->flag & AGRP_EXPANDED)) || \
(((ac) && ((ac)->spacetype == SPACE_GRAPH)) && ((agrp)->flag & AGRP_EXPANDED_G)))
@ AGRP_EXPANDED_G
@ AGRP_EXPANDED
@ SPACE_GRAPH

Definition at line 450 of file ED_anim_api.hh.

Referenced by animfilter_act_group(), and rearrange_action_channels().

◆ EXPANDED_DRVD

#define EXPANDED_DRVD ( adt)    ((adt->flag & ADT_DRIVERS_COLLAPSED) == 0)

◆ EXPANDED_GPD

#define EXPANDED_GPD ( gpd)    (gpd->flag & GP_DATA_EXPAND)

Grease Pencil data-block settings.

Definition at line 464 of file ED_anim_api.hh.

Referenced by animdata_filter_ds_gpencil(), and make_new_animlistelem().

◆ EXPANDED_MASK

#define EXPANDED_MASK ( mask)    (mask->flag & MASK_ANIMF_EXPAND)

Grease Pencil data-block settings.

Definition at line 471 of file ED_anim_api.hh.

Referenced by animdata_filter_mask().

◆ EXPANDED_MCLIP

#define EXPANDED_MCLIP ( clip)    (clip->flag & MCLIP_DATA_EXPAND)

Definition at line 481 of file ED_anim_api.hh.

Referenced by animdata_filter_ds_movieclip(), and make_new_animlistelem().

◆ EXPANDED_OBJC

#define EXPANDED_OBJC ( ob)     (CHECK_TYPE_INLINE(ob, Object *), (((ob)->nlaflag & OB_ADS_COLLAPSED) == 0))

Definition at line 415 of file ED_anim_api.hh.

Referenced by animdata_filter_dopesheet_ob().

◆ EXPANDED_PALETTE

#define EXPANDED_PALETTE ( palette)    (palette->flag & PALETTE_DATA_EXPAND)

Definition at line 484 of file ED_anim_api.hh.

◆ EXPANDED_SCEC

#define EXPANDED_SCEC ( sce)    (CHECK_TYPE_INLINE(sce, Scene *), ((sce->flag & SCE_DS_COLLAPSED) == 0))

Definition at line 409 of file ED_anim_api.hh.

Referenced by animdata_filter_dopesheet_scene().

◆ FILTER_ARM_OBJD

#define FILTER_ARM_OBJD ( arm)    (CHECK_TYPE_INLINE(arm, bArmature *), ((arm->flag & ARM_DS_EXPAND)))

Definition at line 428 of file ED_anim_api.hh.

Referenced by animdata_filter_ds_obdata(), and make_new_animlistelem().

◆ FILTER_CACHEFILE_OBJD

#define FILTER_CACHEFILE_OBJD ( cf)     (CHECK_TYPE_INLINE(cf, CacheFile *), (((cf)->flag & CACHEFILE_DS_EXPAND)))

Definition at line 422 of file ED_anim_api.hh.

Referenced by animdata_filter_ds_cachefile(), and make_new_animlistelem().

◆ FILTER_CAM_OBJD

#define FILTER_CAM_OBJD ( ca)    (CHECK_TYPE_INLINE(ca, Camera *), ((ca->flag & CAM_DS_EXPAND)))

Definition at line 421 of file ED_anim_api.hh.

Referenced by animdata_filter_ds_obdata(), and make_new_animlistelem().

◆ FILTER_CUR_OBJD

#define FILTER_CUR_OBJD ( cu)    (CHECK_TYPE_INLINE(cu, Curve *), ((cu->flag & CU_DS_EXPAND)))

Definition at line 424 of file ED_anim_api.hh.

Referenced by animdata_filter_ds_obdata(), and make_new_animlistelem().

◆ FILTER_CURVES_OBJD

#define FILTER_CURVES_OBJD ( ha)    (CHECK_TYPE_INLINE(ha, Curves *), ((ha->flag & HA_DS_EXPAND)))

Definition at line 432 of file ED_anim_api.hh.

Referenced by animdata_filter_ds_obdata(), and make_new_animlistelem().

◆ FILTER_LAM_OBJD

#define FILTER_LAM_OBJD ( la)    (CHECK_TYPE_INLINE(la, Light *), ((la->flag & LA_DS_EXPAND)))

Definition at line 420 of file ED_anim_api.hh.

Referenced by animdata_filter_ds_obdata(), and make_new_animlistelem().

◆ FILTER_LATTICE_OBJD

#define FILTER_LATTICE_OBJD ( lt)    (CHECK_TYPE_INLINE(lt, Lattice *), ((lt->flag & LT_DS_EXPAND)))

Definition at line 430 of file ED_anim_api.hh.

Referenced by animdata_filter_ds_obdata(), and make_new_animlistelem().

◆ FILTER_LS_SCED

#define FILTER_LS_SCED ( linestyle)    ((linestyle->flag & LS_DS_EXPAND))

Definition at line 412 of file ED_anim_api.hh.

Referenced by animdata_filter_ds_linestyle(), and make_new_animlistelem().

◆ FILTER_MAT_OBJD

#define FILTER_MAT_OBJD ( ma)    (CHECK_TYPE_INLINE(ma, Material *), ((ma->flag & MA_DS_EXPAND)))

Definition at line 419 of file ED_anim_api.hh.

Referenced by animdata_filter_ds_material(), and make_new_animlistelem().

◆ FILTER_MBALL_OBJD

#define FILTER_MBALL_OBJD ( mb)    (CHECK_TYPE_INLINE(mb, MetaBall *), ((mb->flag2 & MB_DS_EXPAND)))

Definition at line 427 of file ED_anim_api.hh.

Referenced by animdata_filter_ds_obdata().

◆ FILTER_MESH_OBJD

#define FILTER_MESH_OBJD ( me)    (CHECK_TYPE_INLINE(me, Mesh *), ((me->flag & ME_DS_EXPAND)))

Definition at line 429 of file ED_anim_api.hh.

Referenced by animdata_filter_ds_obdata(), and make_new_animlistelem().

◆ FILTER_NTREE_DATA

#define FILTER_NTREE_DATA ( ntree)     (CHECK_TYPE_INLINE(ntree, bNodeTree *), (((ntree)->flag & NTREE_DS_EXPAND)))

Definition at line 436 of file ED_anim_api.hh.

Referenced by animdata_filter_ds_nodetree_group(), and make_new_animlistelem().

◆ FILTER_PART_OBJD

#define FILTER_PART_OBJD ( part)     (CHECK_TYPE_INLINE(part, ParticleSettings *), (((part)->flag & PART_DS_EXPAND)))

Definition at line 425 of file ED_anim_api.hh.

Referenced by animdata_filter_ds_particles(), and make_new_animlistelem().

◆ FILTER_POINTS_OBJD

#define FILTER_POINTS_OBJD ( pt)    (CHECK_TYPE_INLINE(pt, PointCloud *), ((pt->flag & PT_DS_EXPAND)))

Definition at line 433 of file ED_anim_api.hh.

Referenced by animdata_filter_ds_obdata(), and make_new_animlistelem().

◆ FILTER_SKE_OBJD

#define FILTER_SKE_OBJD ( key)    (CHECK_TYPE_INLINE(key, Key *), ((key->flag & KEY_DS_EXPAND)))

Definition at line 418 of file ED_anim_api.hh.

Referenced by animdata_filter_ds_keyanim(), and make_new_animlistelem().

◆ FILTER_SPK_OBJD

#define FILTER_SPK_OBJD ( spk)    (CHECK_TYPE_INLINE(spk, Speaker *), ((spk->flag & SPK_DS_EXPAND)))

Definition at line 431 of file ED_anim_api.hh.

Referenced by animdata_filter_ds_obdata(), and make_new_animlistelem().

◆ FILTER_TEX_DATA

#define FILTER_TEX_DATA ( tex)    (CHECK_TYPE_INLINE(tex, Tex *), ((tex->flag & TEX_DS_EXPAND)))

Definition at line 438 of file ED_anim_api.hh.

Referenced by animdata_filter_ds_texture(), and make_new_animlistelem().

◆ FILTER_VOLUME_OBJD

#define FILTER_VOLUME_OBJD ( vo)    (CHECK_TYPE_INLINE(vo, Volume *), ((vo->flag & VO_DS_EXPAND)))

Definition at line 434 of file ED_anim_api.hh.

Referenced by animdata_filter_ds_obdata(), and make_new_animlistelem().

◆ FILTER_WOR_SCED

#define FILTER_WOR_SCED ( wo)    (CHECK_TYPE_INLINE(wo, World *), (wo->flag & WO_DS_EXPAND))

Definition at line 411 of file ED_anim_api.hh.

Referenced by animdata_filter_ds_world(), and make_new_animlistelem().

◆ NLATRACK_FIRST_TOP

◆ NLATRACK_HEIGHT

#define NLATRACK_HEIGHT ( snla)
Value:
(((snla) && ((snla)->flag & SNLA_NOSTRIPCURVES)) ? (0.8f * U.widget_unit) : \
(1.2f * U.widget_unit))
@ SNLA_NOSTRIPCURVES
unsigned int U
Definition btGjkEpa3.h:78

Definition at line 498 of file ED_anim_api.hh.

Referenced by box_select_nla_strips(), draw_nla_main_data(), draw_nla_track_list(), and nla_tracks_get_selected_extents().

◆ NLATRACK_NAMEWIDTH

#define NLATRACK_NAMEWIDTH   (10 * U.widget_unit)

Track widths

Definition at line 508 of file ED_anim_api.hh.

Referenced by animchannels_channel_get(), and nlatracks_mouseclick_invoke().

◆ NLATRACK_SKIP

#define NLATRACK_SKIP   (0.1f * U.widget_unit)

Definition at line 501 of file ED_anim_api.hh.

Referenced by acf_nlaaction_backdrop(), ANIM_channel_draw(), and draw_nla_main_data().

◆ NLATRACK_STEP

◆ NLATRACK_TOT_HEIGHT

#define NLATRACK_TOT_HEIGHT ( ac,
item_amount )    (-NLATRACK_FIRST_TOP(ac) + NLATRACK_STEP(((SpaceNla *)(ac)->sl)) * (item_amount + 1))

Additional offset to give some room at the end.

Definition at line 504 of file ED_anim_api.hh.

Referenced by draw_nla_main_data(), and nla_track_region_draw().

◆ SEL_ACTC

#define SEL_ACTC ( actc)    ((actc->flag & ACT_SELECTED))

Definition at line 441 of file ED_anim_api.hh.

◆ SEL_AGRP

◆ SEL_ANIMDATA

#define SEL_ANIMDATA ( adt)    (adt->flag & ADT_UI_SELECTED)

Definition at line 487 of file ED_anim_api.hh.

Referenced by animdata_filter_shapekey(), and animfilter_block_data().

◆ SEL_FCU

◆ SEL_GPL

#define SEL_GPL ( gpl)    (gpl->flag & GP_LAYER_SELECT)

◆ SEL_MASKLAY

#define SEL_MASKLAY ( masklay)    (masklay->flag & SELECT)

Definition at line 474 of file ED_anim_api.hh.

Referenced by animdata_filter_mask_data().

◆ SEL_NLT

#define SEL_NLT ( nlt)    (nlt->flag & NLATRACK_SELECTED)

Definition at line 477 of file ED_anim_api.hh.

Referenced by animfilter_nla(), and rearrange_animchannel_add_to_islands().

◆ SEL_OBJC

#define SEL_OBJC ( base)    (CHECK_TYPE_INLINE(base, Base *), ((base->flag & SELECT)))

Definition at line 414 of file ED_anim_api.hh.

◆ SEL_SCEC

#define SEL_SCEC ( sce)    (CHECK_TYPE_INLINE(sce, Scene *), ((sce->flag & SCE_DS_SELECTED)))

Definition at line 408 of file ED_anim_api.hh.

◆ SEL_SHAPEKEY

#define SEL_SHAPEKEY ( kb)    (kb->flag & KEYBLOCK_SEL)

Definition at line 460 of file ED_anim_api.hh.

Referenced by animdata_filter_shapekey().

Typedef Documentation

◆ PanelTypePollFn

using PanelTypePollFn = bool (*)(const bContext *C, PanelType *pt)

Needed for abstraction between the graph editor and the NLA editor.

Definition at line 859 of file ED_anim_api.hh.

◆ uiListPanelIDFromDataFunc

using uiListPanelIDFromDataFunc = void (*)(void *data_link, char *r_idname)

Avoid including UI_interface.hh here.

Definition at line 861 of file ED_anim_api.hh.

Enumeration Type Documentation

◆ eAnim_ChannelType

Some types for easier type-testing

Note
need to keep the order of these synchronized with the channels define code (ACF_XXX must have the same value as ANIMTYPE_XXX below) which is used for drawing and handling channel lists for.
Enumerator
ANIMTYPE_NONE 
ANIMTYPE_ANIMDATA 
ANIMTYPE_SPECIALDATA__UNUSED 
ANIMTYPE_SUMMARY 
ANIMTYPE_SCENE 
ANIMTYPE_OBJECT 
ANIMTYPE_GROUP 
ANIMTYPE_FCURVE 
ANIMTYPE_NLACONTROLS 
ANIMTYPE_NLACURVE 
ANIMTYPE_FILLACT_LAYERED 
ANIMTYPE_ACTION_SLOT 
ANIMTYPE_FILLACTD 
ANIMTYPE_FILLDRIVERS 
ANIMTYPE_DSMAT 
ANIMTYPE_DSLAM 
ANIMTYPE_DSCAM 
ANIMTYPE_DSCACHEFILE 
ANIMTYPE_DSCUR 
ANIMTYPE_DSSKEY 
ANIMTYPE_DSWOR 
ANIMTYPE_DSNTREE 
ANIMTYPE_DSPART 
ANIMTYPE_DSMBALL 
ANIMTYPE_DSARM 
ANIMTYPE_DSMESH 
ANIMTYPE_DSTEX 
ANIMTYPE_DSLAT 
ANIMTYPE_DSLINESTYLE 
ANIMTYPE_DSSPK 
ANIMTYPE_DSGPENCIL 
ANIMTYPE_DSMCLIP 
ANIMTYPE_DSHAIR 
ANIMTYPE_DSPOINTCLOUD 
ANIMTYPE_DSVOLUME 
ANIMTYPE_SHAPEKEY 
ANIMTYPE_GPDATABLOCK 
ANIMTYPE_GPLAYER 
ANIMTYPE_GREASE_PENCIL_DATABLOCK 
ANIMTYPE_GREASE_PENCIL_LAYER_GROUP 
ANIMTYPE_GREASE_PENCIL_LAYER 
ANIMTYPE_MASKDATABLOCK 
ANIMTYPE_MASKLAYER 
ANIMTYPE_NLATRACK 
ANIMTYPE_NLAACTION 
ANIMTYPE_PALETTE 
ANIMTYPE_NUM_TYPES 

Definition at line 147 of file ED_anim_api.hh.

◆ eAnim_KeyType

Types of keyframe data in bAnimListElem.

Enumerator
ALE_NONE 
ALE_FCURVE 
ALE_GPFRAME 
ALE_MASKLAY 
ALE_NLASTRIP 
ALE_ALL 
ALE_SCE 
ALE_OB 
ALE_ACT 
ALE_GROUP 
ALE_ACTION_LAYERED 
ALE_ACTION_SLOT 
ALE_GREASE_PENCIL_CEL 
ALE_GREASE_PENCIL_DATA 
ALE_GREASE_PENCIL_GROUP 

Definition at line 211 of file ED_anim_api.hh.

◆ eAnim_Update_Flags

Flags for specifying the types of updates (i.e. recalculation/refreshing) that needs to be performed to the data contained in a channel following editing. For use with ANIM_animdata_update()

Enumerator
ANIM_UPDATE_DEPS 

Referenced data and dependencies get refreshed.

ANIM_UPDATE_ORDER 

Keyframes need to be sorted.

ANIM_UPDATE_HANDLES 

Recalculate handles.

Definition at line 236 of file ED_anim_api.hh.

◆ eAnimChannel_Role

Role or level of anim-channel in the hierarchy.

Enumerator
ACHANNEL_ROLE_EXPANDER 

datablock expander - a "composite" channel type

ACHANNEL_ROLE_CHANNEL 

special purposes - not generally for hierarchy processing data channel - a channel representing one of the actual building blocks of channels

Definition at line 574 of file ED_anim_api.hh.

◆ eAnimChannel_Settings

Enumerator
ACHANNEL_SETTING_SELECT 
ACHANNEL_SETTING_PROTECT 

WARNING: for drawing UI's, need to check if this is off (maybe inverse this later).

ACHANNEL_SETTING_MUTE 
ACHANNEL_SETTING_EXPAND 
ACHANNEL_SETTING_VISIBLE 

only for Graph Editor

ACHANNEL_SETTING_SOLO 

only for NLA Tracks

ACHANNEL_SETTING_PINNED 

only for NLA Actions

ACHANNEL_SETTING_MOD_OFF 
ACHANNEL_SETTING_ALWAYS_VISIBLE 

channel is pinned and always visible

Definition at line 598 of file ED_anim_api.hh.

◆ eAnimChannels_SetFlag

Enumerator
ACHANNEL_SETFLAG_CLEAR 

turn off

ACHANNEL_SETFLAG_ADD 

turn on

ACHANNEL_SETFLAG_INVERT 

on->off, off->on

ACHANNEL_SETFLAG_TOGGLE 

some on -> all off / all on

ACHANNEL_SETFLAG_EXTEND_RANGE 

Turn off, keep active flag.

Definition at line 584 of file ED_anim_api.hh.

◆ eAnimCont_Types

Main Data container types.

Enumerator
ANIMCONT_NONE 

Invalid or no data.

ANIMCONT_ACTION 

Action (bAction).

ANIMCONT_SHAPEKEY 

Shape-key (Key).

ANIMCONT_GPENCIL 

Grease pencil (screen).

ANIMCONT_DOPESHEET 

Dope-sheet (#bDopesheet).

ANIMCONT_FCURVES 

Animation F-Curves (#bDopesheet).

ANIMCONT_DRIVERS 

Drivers (#bDopesheet).

ANIMCONT_NLA 

NLA (#bDopesheet).

ANIMCONT_CHANNEL 

Animation channel (bAnimListElem).

ANIMCONT_MASK 

Mask dope-sheet.

ANIMCONT_TIMELINE 

"timeline" editor (bDopeSheet).

Definition at line 63 of file ED_anim_api.hh.

◆ eAnimEditDraw_CurrentFrame

Enumerator
DRAWCFRA_UNIT_SECONDS 

Plain time indicator with no special indicators. Time indication in seconds or frames.

DRAWCFRA_WIDE 

Draw indicator extra wide (for timeline).

Definition at line 793 of file ED_anim_api.hh.

◆ eAnimFilter_Flags

Enumerator
ANIMFILTER_DATA_VISIBLE 

Data which channel represents is fits the dope-sheet filters (i.e. scene visibility criteria).

XXX: it's hard to think of any examples where this ISN'T the case... perhaps becomes implicit?

ANIMFILTER_LIST_VISIBLE 

channel is visible within the channel-list hierarchy (i.e. F-Curves within Groups in ActEdit)

ANIMFILTER_CURVE_VISIBLE 

channel has specifically been tagged as visible in Graph Editor (* Graph Editor Only)

ANIMFILTER_LIST_CHANNELS 

include summary channels and "expanders" (for drawing/mouse-selection in channel list)

ANIMFILTER_ACTIVE 

for its type, channel should be "active" one

ANIMFILTER_ACTGROUPED 

channel is a child of the active group (* Actions specialty)

ANIMFILTER_SEL 

channel must be selected/not-selected, but both must not be set together

ANIMFILTER_UNSEL 
ANIMFILTER_FOREDIT 

editability status - must be editable to be included

ANIMFILTER_SELEDIT 

only selected animchannels should be considerable as editable - mainly for Graph Editor's option for keys on select curves only

ANIMFILTER_ANIMDATA 

Flags used to enforce certain data types.

Note
The ones for curves and NLA tracks were redundant and have been removed for now.
ANIMFILTER_NODUPLIS 

duplicate entries for animation data attached to multi-user blocks must not occur

ANIMFILTER_FCURVESONLY 

Avoid channels that don't have any F-curve data under them.

Note that this isn't just direct fcurve channels, but also includes e.g. channel groups with fcurve channels as members.

ANIMFILTER_TMP_PEEK 

for checking if we should keep some collapsed channel around (internal use only!)

ANIMFILTER_TMP_IGNORE_ONLYSEL 

Ignore ONLYSEL flag from bDopeSheet.filterflag (internal use only!)

Definition at line 338 of file ED_anim_api.hh.

◆ eAnimUnitConv_Flags

Flags for conversion mapping.

Enumerator
ANIM_UNITCONV_NONE 
ANIM_UNITCONV_RESTORE 

Restore to original internal values.

ANIM_UNITCONV_ONLYKEYS 

Ignore handles (i.e. only touch main keyframes).

ANIM_UNITCONV_ONLYSEL 

Only touch selected BezTriples.

ANIM_UNITCONV_SELVERTS 

Only touch selected vertices.

ANIM_UNITCONV_NORMALIZE 

Scale FCurve i a way it fits to -1..1 space.

ANIM_UNITCONV_NORMALIZE_FREEZE 

Only when normalization is used: use scale factor from previous run, prevents curves from jumping all over the place when tweaking them.

Definition at line 996 of file ED_anim_api.hh.

◆ eAnimvizCalcRange

Enumerator
ANIMVIZ_CALC_RANGE_CURRENT_FRAME 

Update motion paths at the current frame only.

ANIMVIZ_CALC_RANGE_CHANGED 

Try to limit updates to a close neighborhood of the current frame.

ANIMVIZ_CALC_RANGE_FULL 

Update an entire range of the motion paths.

Definition at line 1152 of file ED_anim_api.hh.

Function Documentation

◆ ANIM_anim_channels_select_set()

◆ ANIM_anim_channels_select_toggle()

void ANIM_anim_channels_select_toggle ( bAnimContext * ac)

Toggle selection state of all animation channels in the context.

Definition at line 826 of file anim_channels_edit.cc.

References ANIM_animdata_freelist(), anim_channels_for_selection(), anim_channels_select_set(), and anim_channels_selection_flag_for_toggle().

Referenced by animchannels_selectall_exec().

◆ ANIM_animdata_can_have_greasepencil()

bool ANIM_animdata_can_have_greasepencil ( const eAnimCont_Types type)

◆ ANIM_animdata_context_getdata()

bool ANIM_animdata_context_getdata ( bAnimContext * ac)

Obtain current anim-data context, given that context info from Blender context has already been set:

  • AnimContext to write to is provided as pointer to var on stack so that we don't have allocation/freeing costs (which are not that avoidable with channels).
    Returns
    whether the operation was successful.
    Note
    This may also update the space data. For example, SpaceAction::action is set to the currently active object's Action.

Definition at line 309 of file anim_filter.cc.

References actedit_get_context(), bAnimContext::data, graphedit_get_context(), nlaedit_get_context(), bAnimContext::sl, SPACE_ACTION, SPACE_CLIP, SPACE_CONSOLE, SPACE_EMPTY, SPACE_FILE, SPACE_GRAPH, SPACE_IMAGE, SPACE_INFO, SPACE_NLA, SPACE_NODE, SPACE_OUTLINER, SPACE_PROPERTIES, SPACE_SCRIPT, SPACE_SEQ, SPACE_SPREADSHEET, SPACE_STATUSBAR, SPACE_TEXT, SPACE_TOPBAR, SPACE_USERPREF, SPACE_VIEW3D, and bAnimContext::spacetype.

Referenced by ANIM_animdata_get_context(), recalcData_actedit(), and recalcData_graphedit().

◆ ANIM_animdata_filter()

size_t ANIM_animdata_filter ( bAnimContext * ac,
ListBase * anim_data,
eAnimFilter_Flags filter_mode,
void * data,
eAnimCont_Types datatype )

This function filters the active data source to leave only animation channels suitable for usage by the caller. It will return the length of the list

Parameters
anim_dataIs a pointer to a ListBase, to which the filtered animation channels will be placed for use.
filter_modehow should the data be filtered - bit-mapping accessed flags.

Definition at line 3882 of file anim_filter.cc.

References AnimData::action, bAnimContext::ads, SpaceAction::ads, Key::adt, Object::adt, ANIMCHANNEL_NEW_CHANNEL, ANIMCONT_ACTION, ANIMCONT_CHANNEL, ANIMCONT_DOPESHEET, ANIMCONT_DRIVERS, ANIMCONT_FCURVES, ANIMCONT_GPENCIL, ANIMCONT_MASK, ANIMCONT_NLA, ANIMCONT_NONE, ANIMCONT_SHAPEKEY, ANIMCONT_TIMELINE, animdata_filter_animchan(), animdata_filter_dopesheet(), animdata_filter_dopesheet_summary(), animdata_filter_grease_pencil(), animdata_filter_mask(), animdata_filter_remove_duplis(), animdata_filter_remove_invalid(), animdata_filter_shapekey(), animfilter_action(), ANIMFILTER_ANIMDATA, ANIMFILTER_NODUPLIS, ANIMTYPE_ANIMDATA, BLI_assert, BLI_assert_msg, bAnimContext::bmain, data, LIKELY, bAnimContext::obact, printf, bAnimContext::sl, AnimData::slot_handle, UNLIKELY, UNUSED_VARS_NDEBUG, and wrap().

Referenced by achannel_setting_flush_widget_cb(), action_channel_region_draw(), action_main_region_draw(), actkeys_channels_get_selected_extents(), actkeys_find_list_element_at_position(), actkeys_framejump_exec(), actkeys_mselect_channel_only(), actkeys_mselect_column(), actkeys_mselect_single(), actkeys_select_leftright(), actkeys_select_linked_exec(), ANIM_animdata_keyframe_callback(), anim_channels_for_selection(), ANIM_deselect_keys_in_animation_editors(), ANIM_editkeyframes_refresh(), ANIM_frame_channel_y_extents(), ANIM_set_active_channel(), ANIM_sync_animchannels_to_data(), animchannels_clean_empty_exec(), animchannels_delete_exec(), animchannels_enable_exec(), animchannels_group_channels(), animchannels_group_exec(), animchannels_rearrange_exec(), animchannels_ungroup_exec(), apply_fcu_segment_function(), bake_action_keys(), bake_graph_keys(), blend_to_default_graph_keys(), box_select_action(), box_select_anim_channels(), box_select_elem(), box_select_nla_strips(), btw_smooth_allocate_operator_data(), btw_smooth_graph_keys(), cachefile_to_keylist(), channels_bake_exec(), clean_action_keys(), clean_graph_keys(), columnselect_action_keys(), columnselect_graph_keys(), convert_keys_to_samples(), convert_samples_to_keys(), copy_action_keys(), copy_graph_keys(), count_fcurves_hidden_by_filter(), create_ghost_curves(), createTransActionData(), createTransGraphEditData(), createTransNlaData(), decimate_graph_keys(), delete_action_keys(), delete_graph_keys(), deselect_action_keys(), deselect_all_fcurves(), deselect_graph_keys(), deselect_nla_strips(), draw_nla_main_data(), duplicate_action_keys(), duplicate_graph_keys(), ease_graph_keys(), ED_gpencil_anim_copybuf_copy(), ED_gpencil_anim_copybuf_paste(), ED_nla_postop_refresh(), equalize_graph_keys(), gaussian_smooth_allocate_operator_data(), gaussian_smooth_graph_keys(), get_active_fcurve_channel(), get_graph_keyframe_extents(), get_keyframe_extents(), get_nearest_fcurve_verts_list(), get_nlastrip_extents(), graph_channel_region_draw(), graph_draw_curves(), graph_driver_delete_invalid_exec(), graph_fmodifier_add_exec(), graph_fmodifier_paste_exec(), graph_has_selected_control_points(), graph_refresh_fcurve_colors(), graphkeys_channel_view_pick_invoke(), graphkeys_euler_filter_exec(), graphkeys_mselect_column(), graphkeys_select_key_handles(), graphkeys_select_leftright(), graphkeys_select_linked_exec(), graphkeys_smooth_exec(), graphkeys_view_selected_channels_exec(), graphop_editable_keyframes_poll(), graphop_selected_fcurve_poll(), graphop_visible_keyframes_poll(), graphview_curves_hide_exec(), graphview_curves_reveal_exec(), blender::ed::greasepencil::grease_pencil_copy_keyframes(), blender::ed::greasepencil::grease_pencil_paste_keyframes(), initialize_box_select_anim_data(), insert_action_keys(), insert_graph_keys(), keyframe_jump_exec(), markers_selectkeys_between(), markers_selectkeys_between(), match_slope_graph_keys(), mirror_action_keys(), mirror_graph_keys(), mouse_anim_channels(), mouse_nla_tracks(), nla_fmodifier_add_exec(), nla_fmodifier_copy_exec(), nla_fmodifier_paste_exec(), nla_panel_context(), nla_track_region_draw(), nla_tracks_get_selected_extents(), nlaedit_add_meta_exec(), nlaedit_add_sound_exec(), nlaedit_add_tracks_empty(), nlaedit_add_tracks_existing(), nlaedit_add_transition_exec(), nlaedit_apply_scale_exec(), nlaedit_clear_scale_exec(), nlaedit_delete_exec(), nlaedit_delete_tracks_exec(), nlaedit_disable_tweakmode(), nlaedit_duplicate_exec(), nlaedit_enable_tweakmode_exec(), nlaedit_get_editable_tracks(), nlaedit_make_single_user_exec(), nlaedit_move_down_exec(), nlaedit_move_up_exec(), nlaedit_remove_meta_exec(), nlaedit_select_leftright(), nlaedit_snap_exec(), nlaedit_split_exec(), nlaedit_strip_at_region_position(), nlaedit_swap_exec(), nlaedit_sync_actlen_exec(), nlaedit_toggle_mute_exec(), nlatrack_truncate_temporary_tracks(), nlatracks_pushdown_exec(), ob_keyframes_loop(), ob_to_keylist(), paste_action_keys(), paste_graph_keys(), posttrans_action_clean(), rearrange_animchannels_filter_visible(), rearrange_gpencil_channels(), rearrange_grease_pencil_channels(), recalcData_actedit(), recalcData_graphedit(), blender::animrig::reevaluate_fcurve_errors(), region_select_action_keys(), region_select_elem(), rename_anim_channels(), reset_bezts(), scale_from_neighbor_graph_keys(), scene_keyframes_loop(), scene_to_keylist(), screen_ctx_active_editable_fcurve(), screen_ctx_sel_actions_impl(), screen_ctx_sel_edit_fcurves_(), screen_ctx_selected_editable_keyframes(), screen_ctx_selected_nla_strips(), select_anim_channel_keys(), select_moreless_action_keys(), select_moreless_graph_keys(), seteasing_graph_keys(), setexpo_action_keys(), setexpo_graph_keys(), setflag_anim_channels(), sethandles_action_keys(), sethandles_graph_keys(), setipo_graph_keys(), setkeytype_action_keys(), shear_graph_keys(), snap_action_keys(), snap_graph_keys(), special_aftertrans_update__actedit(), special_aftertrans_update__graph(), special_aftertrans_update__nla(), store_original_bezt_arrays(), sum_selected_keyframes(), summary_keyframes_loop(), summary_to_keylist(), blender::animrig::tests::TEST_F(), blender::animrig::tests::TEST_F(), and update_depsgraph().

◆ ANIM_animdata_freelist()

void ANIM_animdata_freelist ( ListBase * anim_data)

Definition at line 457 of file anim_deps.cc.

References BLI_assert, BLI_freelistN(), BLI_listbase_clear(), ListBase::first, MEM_freeN(), bAnimListElem::next, and bAnimListElem::update.

Referenced by achannel_setting_flush_widget_cb(), action_channel_region_draw(), actkeys_channels_get_selected_extents(), actkeys_find_list_element_at_position(), actkeys_framejump_exec(), actkeys_mselect_channel_only(), actkeys_mselect_column(), actkeys_mselect_single(), actkeys_select_leftright(), actkeys_select_linked_exec(), ANIM_anim_channels_select_set(), ANIM_anim_channels_select_toggle(), ANIM_animdata_keyframe_callback(), ANIM_deselect_keys_in_animation_editors(), ANIM_editkeyframes_refresh(), ANIM_frame_channel_y_extents(), ANIM_set_active_channel(), ANIM_sync_animchannels_to_data(), animchannel_has_active_of_type(), animchannel_select_range(), animchannels_clean_empty_exec(), animchannels_delete_exec(), animchannels_enable_exec(), animchannels_group_channels(), animchannels_group_exec(), animchannels_rearrange_exec(), animchannels_ungroup_exec(), apply_fcu_segment_function(), bake_action_keys(), bake_graph_keys(), blend_to_default_graph_keys(), box_select_action(), box_select_anim_channels(), box_select_elem(), box_select_graphcurves(), box_select_graphkeys(), box_select_nla_strips(), btw_smooth_free_operator_data(), btw_smooth_graph_keys(), cachefile_to_keylist(), channels_bake_exec(), clean_action_keys(), clean_graph_keys(), columnselect_action_keys(), columnselect_graph_keys(), convert_keys_to_samples(), convert_samples_to_keys(), copy_action_keys(), copy_graph_keys(), count_fcurves_hidden_by_filter(), create_ghost_curves(), createTransActionData(), createTransGraphEditData(), createTransNlaData(), decimate_graph_keys(), delete_action_keys(), delete_graph_keys(), deselect_action_keys(), deselect_all_fcurves(), deselect_graph_keys(), deselect_nla_strips(), draw_channel_strips(), draw_nla_main_data(), duplicate_action_keys(), duplicate_graph_keys(), ease_graph_keys(), ED_gpencil_anim_copybuf_copy(), ED_gpencil_anim_copybuf_paste(), ED_nla_postop_refresh(), equalize_graph_keys(), gaussian_smooth_free_operator_data(), gaussian_smooth_graph_keys(), get_active_fcurve_channel(), get_graph_keyframe_extents(), get_keyframe_extents(), get_nearest_fcurve_verts_list(), get_nlastrip_extents(), graph_channel_region_draw(), graph_draw_curves(), graph_driver_delete_invalid_exec(), graph_fmodifier_add_exec(), graph_fmodifier_paste_exec(), graph_has_selected_control_points(), graph_refresh_fcurve_colors(), graphkeys_channel_view_pick_invoke(), graphkeys_euler_filter_exec(), graphkeys_mselect_column(), graphkeys_select_key_handles(), graphkeys_select_leftright(), graphkeys_select_linked_exec(), graphkeys_smooth_exec(), graphkeys_view_selected_channels_exec(), graphop_editable_keyframes_poll(), graphop_selected_fcurve_poll(), graphop_visible_keyframes_poll(), graphview_curves_hide_exec(), graphview_curves_reveal_exec(), blender::ed::greasepencil::grease_pencil_copy_keyframes(), blender::ed::greasepencil::grease_pencil_paste_keyframes(), insert_action_keys(), keyframe_jump_exec(), markers_selectkeys_between(), markers_selectkeys_between(), match_slope_graph_keys(), mirror_action_keys(), mirror_graph_keys(), mouse_anim_channels(), mouse_nla_tracks(), nla_fmodifier_add_exec(), nla_fmodifier_copy_exec(), nla_fmodifier_paste_exec(), nla_panel_context(), nla_track_region_draw(), nla_tracks_get_selected_extents(), nlaedit_add_actionclip_exec(), nlaedit_add_meta_exec(), nlaedit_add_sound_exec(), nlaedit_add_tracks_empty(), nlaedit_add_tracks_existing(), nlaedit_add_transition_exec(), nlaedit_apply_scale_exec(), nlaedit_clear_scale_exec(), nlaedit_delete_exec(), nlaedit_delete_tracks_exec(), nlaedit_disable_tweakmode(), nlaedit_duplicate_exec(), nlaedit_enable_tweakmode_exec(), nlaedit_make_single_user_exec(), nlaedit_move_down_exec(), nlaedit_move_up_exec(), nlaedit_remove_meta_exec(), nlaedit_select_leftright(), nlaedit_snap_exec(), nlaedit_split_exec(), nlaedit_strip_at_region_position(), nlaedit_swap_exec(), nlaedit_sync_actlen_exec(), nlaedit_toggle_mute_exec(), nlatrack_truncate_temporary_tracks(), nlatracks_pushdown_exec(), ob_keyframes_loop(), ob_to_keylist(), paste_action_keys(), paste_graph_keys(), posttrans_action_clean(), rearrange_gpencil_channels(), recalcData_actedit(), recalcData_graphedit(), blender::animrig::reevaluate_fcurve_errors(), region_select_action_keys(), region_select_elem(), rename_anim_channels(), reset_bezts(), scale_from_neighbor_graph_keys(), scene_keyframes_loop(), scene_to_keylist(), screen_ctx_active_editable_fcurve(), screen_ctx_sel_actions_impl(), screen_ctx_sel_edit_fcurves_(), screen_ctx_selected_editable_keyframes(), screen_ctx_selected_nla_strips(), select_anim_channel_keys(), select_moreless_action_keys(), select_moreless_graph_keys(), seteasing_graph_keys(), setexpo_action_keys(), setexpo_graph_keys(), setflag_anim_channels(), sethandles_action_keys(), sethandles_graph_keys(), setipo_graph_keys(), setkeytype_action_keys(), shear_graph_keys(), snap_action_keys(), snap_graph_keys(), special_aftertrans_update__actedit(), special_aftertrans_update__graph(), special_aftertrans_update__nla(), store_original_bezt_arrays(), sum_selected_keyframes(), summary_keyframes_loop(), summary_to_keylist(), blender::animrig::tests::TEST_F(), blender::animrig::tests::TEST_F(), and update_depsgraph().

◆ ANIM_animdata_get_context()

bool ANIM_animdata_get_context ( const bContext * C,
bAnimContext * ac )

Obtain current anim-data context from Blender Context info

  • AnimContext to write to is provided as pointer to var on stack so that we don't have allocation/freeing costs (which are not that avoidable with channels).
  • Clears data and sets the information from Blender Context which is useful
    Returns
    whether the operation was successful.

Definition at line 357 of file anim_filter.cc.

References ANIM_animdata_context_getdata(), bAnimContext::area, BKE_view_layer_active_object_get(), BKE_view_layer_synced_ensure(), bAnimContext::bmain, CTX_data_depsgraph_pointer(), CTX_data_main(), CTX_data_scene(), CTX_data_view_layer(), CTX_wm_area(), CTX_wm_region(), CTX_wm_space_data(), bAnimContext::depsgraph, ED_context_get_markers(), bAnimContext::markers, bAnimContext::obact, bAnimContext::region, bAnimContext::regiontype, bAnimContext::scene, scene, bAnimContext::sl, bAnimContext::spacetype, and bAnimContext::view_layer.

Referenced by achannel_setting_flush_widget_cb(), action_channel_region_draw(), action_circle_select_exec(), action_header_region_draw(), action_main_region_draw(), actkeys_bake_exec(), actkeys_box_select_exec(), actkeys_box_select_invoke(), actkeys_clean_exec(), actkeys_clickselect_exec(), actkeys_columnselect_exec(), actkeys_copy_exec(), actkeys_delete_exec(), actkeys_deselectall_exec(), actkeys_duplicate_exec(), actkeys_easing_exec(), actkeys_expo_exec(), actkeys_framejump_exec(), actkeys_handletype_exec(), actkeys_insertkey_exec(), actkeys_ipo_exec(), actkeys_keytype_exec(), actkeys_lassoselect_exec(), actkeys_mirror_exec(), actkeys_paste_exec(), actkeys_previewrange_exec(), actkeys_select_leftright_exec(), actkeys_select_leftright_invoke(), actkeys_select_less_exec(), actkeys_select_linked_exec(), actkeys_select_more_exec(), actkeys_snap_exec(), actkeys_viewall(), ANIM_deselect_keys_in_animation_editors(), ANIM_sync_animchannels_to_data(), animchannels_box_select_exec(), animchannels_channel_select_keys_invoke(), animchannels_clean_empty_exec(), animchannels_collapse_exec(), animchannels_delete_exec(), animchannels_enable_exec(), animchannels_expand_exec(), animchannels_group_exec(), animchannels_mouseclick_invoke(), animchannels_rearrange_exec(), animchannels_rename_invoke(), animchannels_select_filter_modal(), animchannels_selectall_exec(), animchannels_setflag_exec(), animchannels_ungroup_exec(), blend_offset_exec(), blend_to_default_exec(), blend_to_ease_exec(), blend_to_neighbor_exec(), breakdown_exec(), btw_smooth_exec(), btw_smooth_modal_update(), channels_bake_exec(), createTransActionData(), createTransGraphEditData(), createTransNlaData(), decimate_exec(), drivers_editor_show_exec(), ease_exec(), ed_marker_select_leftright_exec(), gaussian_smooth_exec(), gaussian_smooth_modal_update(), graph_channel_region_draw(), graph_circle_select_exec(), graph_driver_delete_invalid_exec(), graph_driver_delete_invalid_poll(), graph_fmodifier_add_exec(), graph_fmodifier_copy_exec(), graph_fmodifier_paste_exec(), graph_has_selected_control_points(), graph_main_region_draw(), graph_panel_context(), graph_refresh_fcurve_colors(), graph_slider_invoke(), graphkeys_bake_exec(), graphkeys_box_select_exec(), graphkeys_box_select_invoke(), graphkeys_channel_view_pick_invoke(), graphkeys_clean_exec(), graphkeys_clear_ghostcurves_exec(), graphkeys_click_insert_exec(), graphkeys_click_insert_invoke(), graphkeys_clickselect_exec(), graphkeys_columnselect_exec(), graphkeys_copy_exec(), graphkeys_create_ghostcurves_exec(), graphkeys_delete_exec(), graphkeys_deselectall_exec(), graphkeys_duplicate_exec(), graphkeys_easing_exec(), graphkeys_equalize_handles_exec(), graphkeys_euler_filter_exec(), graphkeys_expo_exec(), graphkeys_framejump_exec(), graphkeys_handletype_exec(), graphkeys_insertkey_exec(), graphkeys_ipo_exec(), graphkeys_keys_to_samples_exec(), graphkeys_lassoselect_exec(), graphkeys_mirror_exec(), graphkeys_paste_exec(), graphkeys_previewrange_exec(), graphkeys_samples_to_keys_exec(), graphkeys_select_key_handles_exec(), graphkeys_select_leftright_exec(), graphkeys_select_leftright_invoke(), graphkeys_select_less_exec(), graphkeys_select_linked_exec(), graphkeys_select_more_exec(), graphkeys_smooth_exec(), graphkeys_snap_cursor_value_exec(), graphkeys_snap_exec(), graphkeys_sound_to_samples_invoke(), graphkeys_view_selected_channels_exec(), graphkeys_viewall(), graphop_active_fcurve_poll(), graphop_editable_keyframes_poll(), graphop_selected_fcurve_poll(), graphop_visible_keyframes_poll(), graphview_curves_hide_exec(), graphview_curves_reveal_exec(), keyframe_jump_exec(), match_slope_exec(), nla_fmodifier_add_exec(), nla_fmodifier_copy_exec(), nla_fmodifier_paste_exec(), nla_main_region_draw(), nla_panel_context(), nla_track_region_draw(), nlaedit_add_actionclip_exec(), nlaedit_add_actionclip_invoke(), nlaedit_add_meta_exec(), nlaedit_add_sound_exec(), nlaedit_add_tracks_exec(), nlaedit_add_transition_exec(), nlaedit_apply_scale_exec(), nlaedit_box_select_exec(), nlaedit_box_select_invoke(), nlaedit_clear_scale_exec(), nlaedit_clickselect_exec(), nlaedit_delete_exec(), nlaedit_delete_tracks_exec(), nlaedit_deselectall_exec(), nlaedit_disable_tweakmode_exec(), nlaedit_duplicate_exec(), nlaedit_enable_tweakmode_exec(), nlaedit_make_single_user_exec(), nlaedit_move_down_exec(), nlaedit_move_up_exec(), nlaedit_objects_add_exec(), nlaedit_previewrange_exec(), nlaedit_remove_meta_exec(), nlaedit_select_leftright_exec(), nlaedit_select_leftright_invoke(), nlaedit_snap_exec(), nlaedit_split_exec(), nlaedit_swap_exec(), nlaedit_sync_actlen_exec(), nlaedit_toggle_mute_exec(), nlaedit_viewall(), nlatracks_mouseclick_invoke(), nlatracks_pushdown_exec(), push_pull_exec(), scale_average_exec(), scale_from_neighbor_exec(), screen_animation_region_tag_redraw(), screen_ctx_active_editable_fcurve(), screen_ctx_sel_actions_impl(), screen_ctx_sel_edit_fcurves_(), screen_ctx_selected_editable_keyframes(), screen_ctx_selected_nla_strips(), shear_exec(), special_aftertrans_update__actedit(), special_aftertrans_update__graph(), special_aftertrans_update__nla(), time_offset_exec(), and view_curve_in_graph_editor_exec().

◆ ANIM_animdata_update()

void ANIM_animdata_update ( bAnimContext * ac,
ListBase * anim_data )

Acts on bAnimListElem eAnim_Update_Flags.

Definition at line 350 of file anim_deps.cc.

References ALE_FCURVE, ALE_MASKLAY, ANIM_list_elem_update(), ANIM_UPDATE_DEPS, ANIM_UPDATE_HANDLES, ANIM_UPDATE_ORDER, ANIMTYPE_ANIMDATA, ANIMTYPE_GPLAYER, ANIMTYPE_GREASE_PENCIL_DATABLOCK, ANIMTYPE_GREASE_PENCIL_LAYER, ANIMTYPE_GREASE_PENCIL_LAYER_GROUP, ANIMTYPE_NLAACTION, ANIMTYPE_NLACURVE, ANIMTYPE_NLATRACK, BKE_fcurve_handles_recalc(), BKE_gpencil_layer_frames_sort(), BLI_assert, bAnimContext::bmain, ELEM, G, G_DEBUG, LISTBASE_FOREACH, printf, bAnimContext::scene, and sort_time_fcurve().

Referenced by actkeys_mselect_channel_only(), actkeys_mselect_column(), actkeys_mselect_single(), actkeys_select_leftright(), ANIM_animdata_keyframe_callback(), ANIM_editkeyframes_refresh(), animchannels_delete_exec(), animchannels_enable_exec(), apply_fcu_segment_function(), bake_action_keys(), bake_graph_keys(), blend_to_default_graph_keys(), box_select_action(), box_select_elem(), btw_smooth_graph_keys(), btw_smooth_modal_update(), clean_action_keys(), clean_graph_keys(), columnselect_action_keys(), convert_keys_to_samples(), convert_samples_to_keys(), decimate_graph_keys(), delete_action_keys(), delete_graph_keys(), deselect_action_keys(), duplicate_action_keys(), duplicate_graph_keys(), ease_graph_keys(), ED_nla_postop_refresh(), equalize_graph_keys(), gaussian_smooth_graph_keys(), gaussian_smooth_modal_update(), graph_fmodifier_add_exec(), graph_fmodifier_paste_exec(), graphkeys_click_insert_exec(), graphkeys_euler_filter_exec(), graphkeys_smooth_exec(), insert_action_keys(), markers_selectkeys_between(), match_slope_graph_keys(), mirror_action_keys(), mirror_graph_keys(), mouse_action_keys(), mouse_nla_tracks(), nla_fmodifier_add_exec(), nla_fmodifier_paste_exec(), nlaedit_add_meta_exec(), nlaedit_add_tracks_empty(), nlaedit_add_tracks_existing(), nlaedit_apply_scale_exec(), nlaedit_delete_tracks_exec(), nlaedit_disable_tweakmode(), nlaedit_enable_tweakmode_exec(), nlaedit_make_single_user_exec(), nlaedit_remove_meta_exec(), nlaedit_snap_exec(), nlaedit_sync_actlen_exec(), nlaedit_toggle_mute_exec(), paste_animedit_keys(), region_select_action_keys(), region_select_elem(), scale_from_neighbor_graph_keys(), seteasing_graph_keys(), setexpo_action_keys(), setexpo_graph_keys(), sethandles_action_keys(), sethandles_graph_keys(), setipo_graph_keys(), setkeytype_action_keys(), shear_graph_keys(), snap_action_keys(), and snap_graph_keys().

◆ ANIM_center_frame()

◆ ANIM_channel_action_get()

bAction * ANIM_channel_action_get ( const bAnimListElem * ale)

◆ ANIM_channel_debug_print_info()

void ANIM_channel_debug_print_info ( bAnimListElem * ale,
short indent_level )

◆ ANIM_channel_draw()

void ANIM_channel_draw ( bAnimContext * ac,
bAnimListElem * ale,
float yminc,
float ymaxc,
size_t channel_index )

Draw the given channel.

Definition at line 4938 of file anim_channels_defines.cc.

References acf_show_channel_colors(), achannel_is_being_renamed(), achannel_is_broken(), achannel_is_part_of_disconnected_slot(), ACHANNEL_SETTING_ALWAYS_VISIBLE, ACHANNEL_SETTING_EXPAND, ACHANNEL_SETTING_MOD_OFF, ACHANNEL_SETTING_MUTE, ACHANNEL_SETTING_PINNED, ACHANNEL_SETTING_PROTECT, ACHANNEL_SETTING_SELECT, ACHANNEL_SETTING_SOLO, ACHANNEL_SETTING_VISIBLE, ANIM_CHAN_NAME_SIZE, ANIM_channel_get_typeinfo(), ANIM_channel_setting_get(), ANIM_UI_get_channel_button_width(), ANIMTYPE_DSGPENCIL, ANIMTYPE_FCURVE, ANIMTYPE_GPLAYER, ANIMTYPE_GREASE_PENCIL_LAYER, ANIMTYPE_GREASE_PENCIL_LAYER_GROUP, ANIMTYPE_GROUP, ANIMTYPE_NLAACTION, ANIMTYPE_NLACURVE, ANIMTYPE_SHAPEKEY, BLI_assert_unreachable, BLI_rcti_size_x(), CHANNEL_COLOR_RECT_MARGIN, CHANNEL_COLOR_RECT_WIDTH, col, FCurve::color, View2D::cur, bAnimListElem::data, bAnimChannelType::draw_backdrop, ELEM, EXTRA_SCROLL_PAD, FCURVE_VISIBLE, FCurve::flag, SpaceAction::flag, SpaceGraph::flag, bAnimChannelType::get_backdrop_color, bAnimChannelType::get_offset, GPU_blend(), GPU_BLEND_ALPHA, GPU_BLEND_NONE, GPU_COMP_F32, GPU_FETCH_FLOAT, GPU_line_width(), GPU_PRIM_LINES, GPU_SHADER_3D_UNIFORM_COLOR, GPU_vertformat_attr_add(), GRAPH_COLOR_BAND_WIDTH, GRAPH_ICON_VISIBILITY_OFFSET, bAnimChannelType::has_setting, bAnimChannelType::icon, ICON_WIDTH, immBegin(), immBindBuiltinProgram(), immEnd(), immRectf(), immUnbindProgram(), immUniformColor3f(), immUniformColor3fv(), immUniformColor3fvAlpha(), immVertex2f(), immVertexFormat(), View2D::mask, bAnimChannelType::name, NLATRACK_SKIP, pos, bAnimContext::region, SACTION_SLIDERS, SIPO_SLIDERS, bAnimContext::sl, SLIDER_WIDTH, SPACE_ACTION, SPACE_GRAPH, SPACE_NLA, bAnimContext::spacetype, TH_TEXT, TH_TEXT_HI, bAnimListElem::type, UI_fontstyle_draw_simple(), UI_FSTYLE_WIDGET, UI_GetThemeColor4ubv(), UI_icon_draw(), ARegion::v2d, V2D_SCROLL_WIDTH, rctf::xmax, and y.

Referenced by draw_channel_names(), draw_nla_track_list(), and graph_draw_channel_names().

◆ ANIM_channel_draw_widgets()

void ANIM_channel_draw_widgets ( const bContext * C,
bAnimContext * ac,
bAnimListElem * ale,
uiBlock * block,
const rctf * rect,
size_t channel_index )

Draw UI widgets the given channel.

Definition at line 5815 of file anim_channels_defines.cc.

References acf_show_channel_colors(), achannel_is_being_renamed(), ACHANNEL_SETTING_ALWAYS_VISIBLE, ACHANNEL_SETTING_EXPAND, ACHANNEL_SETTING_MOD_OFF, ACHANNEL_SETTING_MUTE, ACHANNEL_SETTING_PINNED, ACHANNEL_SETTING_PROTECT, achannel_setting_slider_cb(), achannel_setting_slider_nla_curve_cb(), achannel_setting_slider_shapekey_cb(), ACHANNEL_SETTING_SOLO, ACHANNEL_SETTING_VISIBLE, AnimData::action, bAnimContext::ads, bAnimListElem::adt, ADT_NLA_EDIT_ON, ANIM_channel_get_typeinfo(), ANIM_UI_get_channel_button_width(), ANIMTYPE_ACTION_SLOT, ANIMTYPE_FCURVE, ANIMTYPE_GPLAYER, ANIMTYPE_GREASE_PENCIL_LAYER, ANIMTYPE_GREASE_PENCIL_LAYER_GROUP, ANIMTYPE_NLAACTION, ANIMTYPE_NLACURVE, ANIMTYPE_SHAPEKEY, FCurve::array_index, FCurve::bezt, BKE_keyblock_curval_rnapath_get(), BLI_assert_unreachable, BLI_rctf_cent_y(), BLI_rctf_size_y(), BLI_rcti_size_x(), CHANNEL_COLOR_RECT_MARGIN, CHANNEL_COLOR_RECT_WIDTH, bAnimListElem::data, draw_grease_pencil_layer_widgets(), draw_setting_widget(), ELEM, AnimData::flag, bGPdata::flag, bGPDlayer::flag, SpaceAction::flag, SpaceGraph::flag, bAnimChannelType::get_channel_color, bAnimChannelType::get_offset, GP_DATA_ANNOTATIONS, GP_LAYER_ONIONSKIN, GP_LAYER_USE_MASK, GPU_COMP_F32, GPU_FETCH_FLOAT, GPU_SHADER_3D_UNIFORM_COLOR, GPU_vertformat_attr_add(), GRAPH_ICON_VISIBILITY_OFFSET, bAnimChannelType::has_setting, bAnimChannelType::icon, ICON_WIDTH, bAnimListElem::id, immBindBuiltinProgram(), immRectf(), immUnbindProgram(), immUniformColor3ubv(), int, View2D::mask, NA_RENAME, bAnimChannelType::name_prop, NC_ANIMATION, ND_ANIMCHAN, bGPDlayer::onion_flag, bAnimListElem::owner, pos, PROP_ENUM, ptr, rect_width(), bAnimContext::region, RENAME_TEXT_MIN_WIDTH, bDopeSheet::renameIndex, RNA_id_pointer_create(), RNA_int_set(), FCurve::rna_path, RNA_path_from_ID_to_property(), RNA_path_resolve_property(), RNA_pointer_create(), RNA_property_identifier(), RNA_property_type(), RNA_struct_find_property(), round_fl_to_int(), SACTION_SLIDERS, SIPO_SLIDERS, bAnimContext::sl, SLIDER_WIDTH, SPACE_ACTION, SPACE_GRAPH, SPACE_NLA, bAnimContext::spacetype, bAnimListElem::type, UI_block_emboss_set(), UI_BTYPE_BUT, UI_BTYPE_TEXT, UI_but_active_only(), UI_but_func_set(), UI_but_operator_ptr_ensure(), UI_EMBOSS, UI_EMBOSS_NONE, UI_icon_draw(), UI_SCALE_FAC, UI_UNIT_X, uiDefAutoButR(), uiDefButR(), uiDefIconButO(), ARegion::v2d, ARegion::winx, WM_event_add_notifier(), WM_OP_INVOKE_DEFAULT, rctf::xmax, rctf::xmin, rctf::ymax, and rctf::ymin.

Referenced by draw_channel_names(), draw_nla_track_list(), and graph_draw_channel_names().

◆ ANIM_channel_get_typeinfo()

◆ ANIM_channel_setting_get()

◆ ANIM_channel_setting_set()

◆ ANIM_deselect_keys_in_animation_editors()

◆ ANIM_draw_action_framerange()

◆ ANIM_draw_cfra()

◆ ANIM_draw_framerange()

◆ ANIM_draw_previewrange()

◆ ANIM_flush_setting_anim_channels()

void ANIM_flush_setting_anim_channels ( bAnimContext * ac,
ListBase * anim_data,
bAnimListElem * ale_setting,
eAnimChannel_Settings setting,
eAnimChannels_SetFlag mode )

Flush visibility (for Graph Editor) changes up/down hierarchy for changes in the given setting

  • anim_data: list of the all the anim channels that can be chosen -> filtered using ANIMFILTER_CHANNELS only, since if we took VISIBLE too, then the channels under closed expanders get ignored...
  • ale_setting: the anim channel (not in the anim_data list directly, though occurring there) with the new state of the setting that we want flushed up/down the hierarchy
  • setting: type of setting to set
  • on: whether the visibility setting has been enabled or disabled

Definition at line 949 of file anim_channels_edit.cc.

References ACHANNEL_SETTING_ALWAYS_VISIBLE, ANIM_channel_get_typeinfo(), anim_flush_channel_setting_down(), anim_flush_channel_setting_up(), bAnimListElem::data, ELEM, ListBase::first, bAnimChannelType::get_offset, bAnimListElem::id, LISTBASE_FOREACH, printf, and bAnimListElem::type.

Referenced by achannel_setting_flush_widget_cb(), graphview_curves_hide_exec(), graphview_curves_reveal_exec(), and setflag_anim_channels().

◆ ANIM_fmodifier_panels()

void ANIM_fmodifier_panels ( const bContext * C,
ID * owner_id,
ListBase * fmodifiers,
uiListPanelIDFromDataFunc panel_id_fn )

◆ ANIM_fmodifiers_copy_to_buf()

bool ANIM_fmodifiers_copy_to_buf ( ListBase * modifiers,
bool active )

Copy the given F-Modifiers to the buffer, returning whether anything was copied or not assuming that the buffer has been cleared already with ANIM_fmodifiers_copybuf_free()

Parameters
activeOnly copy the active modifier.

Definition at line 951 of file fmodifier_ui.cc.

References BLI_addtail(), copy_fmodifier(), copy_fmodifiers(), ELEM, find_active_fmodifier(), ListBase::first, and fmodifier_copypaste_buf.

Referenced by graph_fmodifier_copy_exec(), and nla_fmodifier_copy_exec().

◆ ANIM_fmodifiers_copybuf_free()

void ANIM_fmodifiers_copybuf_free ( )

Free the copy/paste buffer.

Definition at line 945 of file fmodifier_ui.cc.

References fmodifier_copypaste_buf, and free_fmodifiers().

Referenced by graph_fmodifier_copy_exec(), nla_fmodifier_copy_exec(), and WM_exit_ex().

◆ ANIM_fmodifiers_paste_from_buf()

bool ANIM_fmodifiers_paste_from_buf ( ListBase * modifiers,
bool replace,
FCurve * curve )

'Paste' the F-Modifier(s) from the buffer to the specified list

Parameters
replaceFree all the existing modifiers to leave only the pasted ones.

Definition at line 980 of file fmodifier_ui.cc.

References BKE_fcurve_handles_recalc(), BKE_fcurve_is_cyclic(), BLI_addtail(), copy_fmodifier(), curve, FModifier::curve, FModifier::flag, fmodifier_copypaste_buf, free_fmodifiers(), and LISTBASE_FOREACH.

Referenced by graph_fmodifier_paste_exec(), and nla_fmodifier_paste_exec().

◆ ANIM_frame_channel_y_extents()

◆ ANIM_frame_range_view2d_add_xmargin()

rctf ANIM_frame_range_view2d_add_xmargin ( const View2D & view_2d,
rctf view_rect )

Add horizontal margin to the rectangle.

This function assumes that the X-min/X-max are set to a frame range to show.

Returns
The new rectangle with horizontal margin added, for visual comfort.

Definition at line 706 of file anim_draw.cc.

References BLI_rctf_size_x(), BLI_rcti_size_x(), View2D::mask, UI_SCALE_FAC, rctf::xmax, and rctf::xmin.

Referenced by actkeys_viewall(), graphkeys_viewall(), and scene_range_frame_exec().

◆ ANIM_get_normalization_flags()

◆ ANIM_graph_context_fcurve()

FCurve * ANIM_graph_context_fcurve ( const bContext * C)

Definition at line 95 of file graph_buttons.cc.

References graph_panel_context().

Referenced by fmodifier_get_pointers(), and fmodifier_list_space_specific().

◆ ANIM_id_update()

void ANIM_id_update ( Main * bmain,
ID * id )

Tags the given ID block for refreshes (if applicable) due to Animation Editor editing.

Definition at line 102 of file anim_deps.cc.

References DEG_id_tag_update_ex(), ID_RECALC_ANIMATION, ID_RECALC_GEOMETRY, and ID_RECALC_TRANSFORM.

Referenced by convert_action_exec(), merge_actions_selection_exec(), and recalcData_nla().

◆ ANIM_is_active_channel()

◆ ANIM_list_elem_update()

◆ ANIM_modifier_panels_register_graph_and_NLA()

void ANIM_modifier_panels_register_graph_and_NLA ( ARegionType * region_type,
const char * modifier_panel_prefix,
PanelTypePollFn poll_function )

◆ ANIM_modifier_panels_register_graph_only()

void ANIM_modifier_panels_register_graph_only ( ARegionType * region_type,
const char * modifier_panel_prefix,
PanelTypePollFn poll_function )

Definition at line 924 of file fmodifier_ui.cc.

References panel_register_cycles().

Referenced by graph_buttons_register().

◆ ANIM_nla_context_strip()

NlaStrip * ANIM_nla_context_strip ( const bContext * C)

Definition at line 225 of file nla_buttons.cc.

References ANIM_nla_context_strip_ptr(), and PointerRNA::data.

Referenced by fmodifier_list_space_specific().

◆ ANIM_nla_context_strip_ptr()

bool ANIM_nla_context_strip_ptr ( const bContext * C,
PointerRNA * r_ptr )

Definition at line 211 of file nla_buttons.cc.

References nla_panel_context().

Referenced by ANIM_nla_context_strip(), and screen_ctx_active_nla_strip().

◆ ANIM_nla_context_track()

NlaTrack * ANIM_nla_context_track ( const bContext * C)

Definition at line 216 of file nla_buttons.cc.

References ANIM_nla_context_track_ptr(), and PointerRNA::data.

◆ ANIM_nla_context_track_ptr()

bool ANIM_nla_context_track_ptr ( const bContext * C,
PointerRNA * r_ptr )

Definition at line 206 of file nla_buttons.cc.

References nla_panel_context().

Referenced by ANIM_nla_context_track(), and screen_ctx_active_nla_track().

◆ ANIM_nla_mapping_apply_fcurve()

◆ ANIM_nla_mapping_get()

AnimData * ANIM_nla_mapping_get ( bAnimContext * ac,
bAnimListElem * ale )

◆ ANIM_set_active_channel()

void ANIM_set_active_channel ( bAnimContext * ac,
void * data,
eAnimCont_Types datatype,
eAnimFilter_Flags filter,
void * channel_data,
eAnim_ChannelType channel_type )

Set the given animation-channel as the active one for the active context.

Definition at line 232 of file anim_channels_edit.cc.

References ACHANNEL_SET_FLAG, ACHANNEL_SETFLAG_CLEAR, bAnimListElem::adt, ADT_UI_ACTIVE, AGRP_ACTIVE, ANIM_animdata_filter(), ANIM_animdata_freelist(), ANIMTYPE_ACTION_SLOT, ANIMTYPE_ANIMDATA, ANIMTYPE_DSARM, ANIMTYPE_DSCACHEFILE, ANIMTYPE_DSCAM, ANIMTYPE_DSCUR, ANIMTYPE_DSGPENCIL, ANIMTYPE_DSHAIR, ANIMTYPE_DSLAM, ANIMTYPE_DSLAT, ANIMTYPE_DSLINESTYLE, ANIMTYPE_DSMAT, ANIMTYPE_DSMBALL, ANIMTYPE_DSMCLIP, ANIMTYPE_DSMESH, ANIMTYPE_DSNTREE, ANIMTYPE_DSPART, ANIMTYPE_DSPOINTCLOUD, ANIMTYPE_DSSKEY, ANIMTYPE_DSSPK, ANIMTYPE_DSTEX, ANIMTYPE_DSVOLUME, ANIMTYPE_DSWOR, ANIMTYPE_FCURVE, ANIMTYPE_FILLACT_LAYERED, ANIMTYPE_FILLACTD, ANIMTYPE_FILLDRIVERS, ANIMTYPE_GPDATABLOCK, ANIMTYPE_GPLAYER, ANIMTYPE_GREASE_PENCIL_DATABLOCK, ANIMTYPE_GREASE_PENCIL_LAYER, ANIMTYPE_GREASE_PENCIL_LAYER_GROUP, ANIMTYPE_GROUP, ANIMTYPE_MASKDATABLOCK, ANIMTYPE_MASKLAYER, ANIMTYPE_NLAACTION, ANIMTYPE_NLACONTROLS, ANIMTYPE_NLACURVE, ANIMTYPE_NLATRACK, ANIMTYPE_NONE, ANIMTYPE_NUM_TYPES, ANIMTYPE_OBJECT, ANIMTYPE_PALETTE, ANIMTYPE_SCENE, ANIMTYPE_SHAPEKEY, ANIMTYPE_SPECIALDATA__UNUSED, ANIMTYPE_SUMMARY, BLI_listbase_is_empty(), bAnimListElem::data, FCURVE_ACTIVE, ListBase::first, AnimData::flag, bActionGroup::flag, bGPDlayer::flag, FCurve::flag, NlaTrack::flag, GP_LAYER_ACTIVE, bAnimListElem::next, NLATRACK_ACTIVE, and bAnimListElem::type.

Referenced by box_select_graphcurves(), click_select_channel_fcurve(), click_select_channel_gplayer(), click_select_channel_group(), drivers_editor_show_exec(), mouse_action_keys(), mouse_graph_keys(), mouse_nla_strips(), and mouse_nla_tracks().

◆ ANIM_sync_animchannels_to_data()

◆ ANIM_UI_get_channel_button_width()

float ANIM_UI_get_channel_button_width ( )

Definition at line 4933 of file anim_channels_defines.cc.

Referenced by ANIM_channel_draw(), and ANIM_channel_draw_widgets().

◆ ANIM_UI_get_channel_height()

◆ ANIM_UI_get_channel_name_width()

float ANIM_UI_get_channel_name_width ( )

◆ ANIM_UI_get_channel_skip()

float ANIM_UI_get_channel_skip ( )

◆ ANIM_UI_get_channel_step()

◆ ANIM_UI_get_channels_total_height()

float ANIM_UI_get_channels_total_height ( View2D * v2d,
int item_count )

◆ ANIM_UI_get_first_channel_top()

◆ ANIM_UI_get_keyframe_scale_factor()

float ANIM_UI_get_keyframe_scale_factor ( )

◆ ANIM_unit_mapping_get_factor()

◆ animviz_calc_motionpaths()

◆ animviz_depsgraph_build()

Depsgraph * animviz_depsgraph_build ( Main * bmain,
Scene * scene,
ViewLayer * view_layer,
ListBase * targets )

◆ animviz_get_object_motionpaths()

void animviz_get_object_motionpaths ( Object * ob,
ListBase * targets )

◆ animviz_motionpath_compute_range()

◆ ED_actedit_animdata_from_context()

◆ ED_animedit_unlink_action()

◆ ED_drivers_editor_init()

void ED_drivers_editor_init ( bContext * C,
ScrArea * area )

Set up UI configuration for Drivers Editor (drivers editor window) and RNA (mode switching).

Note
Currently called from window-manager.

Definition at line 36 of file graph_utils.cc.

References BKE_area_find_region_type(), View2D::cur, ED_region_visibility_change_update(), ARegion::flag, SpaceGraph::mode, printf, RGN_TYPE_UI, RGN_TYPE_WINDOW, SIPO_MODE_DRIVERS, View2D::tot, UI_panel_category_active_set(), ARegion::v2d, rctf::xmax, rctf::xmin, rctf::ymax, and rctf::ymin.

Referenced by drivers_editor_show_exec().

◆ ED_keymap_anim()

void ED_keymap_anim ( wmKeyConfig * keyconf)

Definition at line 983 of file anim_ops.cc.

References RGN_TYPE_WINDOW, SPACE_EMPTY, and WM_keymap_ensure().

Referenced by ED_spacetypes_keymap().

◆ ED_keymap_animchannels()

void ED_keymap_animchannels ( wmKeyConfig * keyconf)

Definition at line 5752 of file anim_channels_edit.cc.

References RGN_TYPE_WINDOW, SPACE_EMPTY, and WM_keymap_ensure().

Referenced by ED_spacetypes_keymap().

◆ ED_nla_postop_refresh()

◆ ED_operatormacros_action()

◆ ED_operatormacros_graph()

◆ ED_operatormacros_nla()

◆ ED_operatortypes_anim()

◆ ED_operatortypes_animchannels()

◆ ENUM_OPERATORS() [1/2]

ENUM_OPERATORS ( eAnim_Update_Flags ,
ANIM_UPDATE_HANDLES  )

◆ ENUM_OPERATORS() [2/2]

◆ getcolor_fcurve_rainbow()

void getcolor_fcurve_rainbow ( int cur,
int tot,
float out[3] )

Automatically determine a color for the nth F-Curve.

Definition at line 287 of file anim_ipo_utils.cc.

References float, fmod(), HSV_BANDWIDTH, and hsv_to_rgb_v().

Referenced by graph_refresh_fcurve_colors().

◆ getname_anim_fcurve()

std::optional< int > getname_anim_fcurve ( char * name,
ID * id,
FCurve * fcu )

Get icon + name for channel-list displays for F-Curve.

Write into "name" buffer, the name of the property (retrieved using RNA from the curve's settings), and return the icon used for the struct that this property refers to

Warning
name buffer we're writing to cannot exceed 256 chars (check anim_channels_defines.cc for details).
Returns
the icon of whatever struct the F-Curve's RNA path resolves to. Returns #std::nullopt if the path could not be resolved.

Definition at line 41 of file anim_ipo_utils.cc.

References FCurve::array_index, BLI_assert_unreachable, BLI_snprintf(), BLI_sprintfN(), BLI_str_quoted_substr(), BLI_strncpy(), PointerRNA::data, FCURVE_DISABLED, FCurve::flag, GS, ID_SCE, MEM_freeN(), ID::name, PointerRNA::owner_id, ptr, RNA_id_pointer_create(), FCurve::rna_path, RNA_path_resolve_property(), RNA_property_array_check(), RNA_property_array_item_char(), RNA_property_string_get_alloc(), RNA_property_ui_name(), RNA_struct_is_a(), RNA_struct_name_property(), RNA_struct_ui_icon(), RNA_struct_ui_name(), RPT_, SNPRINTF, and PointerRNA::type.

Referenced by acf_fcurve_name(), getname_anim_fcurve_for_slot(), graph_draw_driven_property_panel(), and graph_panel_properties().

◆ getname_anim_fcurve_for_slot()

std::string getname_anim_fcurve_for_slot ( Main & bmain,
const blender::animrig::Slot & slot,
FCurve & fcurve )

◆ nla_action_get_color()

void nla_action_get_color ( AnimData * adt,
bAction * act,
float color[4] )

Get color to use for NLA Action channel's background.

Note
color returned includes fine-tuned alpha!

Definition at line 54 of file nla_draw.cc.

References ADT_NLA_EDIT_ON, ADT_NLA_SOLO_TRACK, AnimData::flag, TH_ANIM_ACTIVE, TH_ANIM_INACTIVE, TH_NLA_TWEAK, and UI_GetThemeColor4fv().

Referenced by acf_nlaaction_backdrop(), acf_nlaaction_color(), draw_nla_main_data(), and nla_action_draw_keyframes().