Blender V5.0
ED_anim_api.hh File Reference
#include "BKE_nla.hh"
#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

Namespaces

namespace  blender
namespace  blender::animrig

Macros

Flag Checking Macros
#define SEL_SCEC(sce)
#define EXPANDED_SCEC(sce)
#define FILTER_WOR_SCED(wo)
#define FILTER_LS_SCED(linestyle)
#define SEL_OBJC(base)
#define EXPANDED_OBJC(ob)
#define FILTER_SKE_OBJD(key)
#define FILTER_MAT_OBJD(ma)
#define FILTER_LAM_OBJD(la)
#define FILTER_CAM_OBJD(ca)
#define FILTER_CACHEFILE_OBJD(cf)
#define FILTER_CUR_OBJD(cu)
#define FILTER_PART_OBJD(part)
#define FILTER_MBALL_OBJD(mb)
#define FILTER_ARM_OBJD(arm)
#define FILTER_MESH_OBJD(me)
#define FILTER_LATTICE_OBJD(lt)
#define FILTER_SPK_OBJD(spk)
#define FILTER_CURVES_OBJD(ha)
#define FILTER_POINTS_OBJD(pt)
#define FILTER_VOLUME_OBJD(vo)
#define FILTER_LIGHTPROBE_OBJD(probe)
#define FILTER_NTREE_DATA(ntree)
#define FILTER_TEX_DATA(tex)
#define SEL_ACTC(actc)
#define EXPANDED_ACTC(actc)
#define EXPANDED_DRVD(adt)
#define EXPANDED_ADT(adt)
#define EDITABLE_AGRP(agrp)
#define EXPANDED_AGRP(ac, agrp)
#define SEL_AGRP(agrp)
#define EDITABLE_FCU(fcu)
#define SEL_FCU(fcu)
#define EDITABLE_SHAPEKEY(kb)
#define SEL_SHAPEKEY(kb)
#define EXPANDED_GPD(gpd)
#define EDITABLE_GPL(gpl)
#define SEL_GPL(gpl)
#define EXPANDED_MASK(mask)
#define EDITABLE_MASK(masklay)
#define SEL_MASKLAY(masklay)
#define SEL_NLT(nlt)
#define EDITABLE_NLT(nlt)
#define EXPANDED_MCLIP(clip)
#define EXPANDED_PALETTE(palette)
#define SEL_ANIMDATA(adt)
NLA Track Defines
#define NLATRACK_FIRST_TOP(ac)
#define NLATRACK_HEIGHT(snla)
#define NLATRACK_SKIP   (0.1f * U.widget_unit)
#define NLATRACK_STEP(snla)
#define NLATRACK_TOT_HEIGHT(ac, item_amount)
#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_animfilter_action_slot (bAnimContext *ac, ListBase *anim_data, blender::animrig::Action &action, blender::animrig::Slot &slot, eAnimFilter_Flags filter_mode, ID *animated_id)
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)
bActionANIM_active_action_from_area (Scene *scene, ViewLayer *view_layer, const ScrArea *area, ID **r_action_user=nullptr)
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 (const bAnimListElem *ale)
void ANIM_channel_debug_print_info (bAnimContext &ac, 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 Scene *scene, View2D *v2d, int end_frame_width)
void ANIM_draw_scene_strip_range (const bContext *C, View2D *v2d)
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< int > getname_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
bool ANIM_nla_mapping_allowed (const bAnimListElem *ale)
float ANIM_nla_tweakedit_remap (bAnimListElem *ale, float cframe, eNlaTime_ConvertModes mode)
void ANIM_nla_mapping_apply_fcurve (AnimData *adt, FCurve *fcu, bool restore, bool only_keys)
void ANIM_nla_mapping_apply_if_needed_fcurve (bAnimListElem *ale, 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_DSLIGHTPROBE ,
  ANIMTYPE_SHAPEKEY , 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)
void ED_anim_ale_fcurve_delete (bAnimContext &ac, bAnimListElem &ale)
Depsgraph * animviz_depsgraph_build (Main *bmain, Scene *scene, ViewLayer *view_layer, blender::Span< MPathTarget * > targets)
void animviz_calc_motionpaths (Depsgraph *depsgraph, Main *bmain, Scene *scene, blender::MutableSpan< MPathTarget * > targets, eAnimvizCalcRange range, bool restore)
void animviz_motionpath_compute_range (Object *ob, Scene *scene)
void animviz_build_motionpath_targets (Object *ob, blender::Vector< MPathTarget * > &r_targets)
void animviz_free_motionpath_targets (blender::Vector< MPathTarget * > &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:145

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 1136 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 1156 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 276 of file ED_anim_api.hh.

Referenced by seteasing_graph_keys(), and setipo_graph_keys().

◆ EDITABLE_AGRP

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

Action Channel Group.

Definition at line 479 of file ED_anim_api.hh.

Referenced by animfilter_act_group().

◆ EDITABLE_FCU

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

F-Curve Channels.

Definition at line 485 of file ED_anim_api.hh.

Referenced by animfilter_fcurve_next().

◆ EDITABLE_GPL

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

Grease Pencil Layer settings.

Definition at line 496 of file ED_anim_api.hh.

Referenced by animdata_filter_gpencil_layers_data_legacy().

◆ EDITABLE_MASK

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

Grease Pencil Layer settings.

Definition at line 503 of file ED_anim_api.hh.

Referenced by animdata_filter_mask_data().

◆ EDITABLE_NLT

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

Definition at line 508 of file ED_anim_api.hh.

Referenced by animfilter_nla().

◆ EDITABLE_SHAPEKEY

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

Definition at line 489 of file ED_anim_api.hh.

Referenced by animdata_filter_shapekey().

◆ EXPANDED_ACTC

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

Definition at line 472 of file ED_anim_api.hh.

Referenced by animdata_filter_ds_obanim(), and animdata_filter_ds_scene().

◆ EXPANDED_ADT

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

Definition at line 475 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 480 of file ED_anim_api.hh.

Referenced by animfilter_act_group(), and rearrange_action_channels().

◆ EXPANDED_DRVD

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

Definition at line 474 of file ED_anim_api.hh.

Referenced by animdata_filter_ds_obanim(), animdata_filter_ds_scene(), and rearrange_driver_channels().

◆ EXPANDED_GPD

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

Grease Pencil data-block settings.

Definition at line 494 of file ED_anim_api.hh.

Referenced by animdata_filter_ds_gpencil(), and make_new_animlistelem().

◆ EXPANDED_MASK

#define EXPANDED_MASK ( mask)
Value:
@ MASK_ANIMF_EXPAND
ccl_device_inline float2 mask(const MaskType mask, const float2 a)

Grease Pencil data-block settings.

Definition at line 501 of file ED_anim_api.hh.

Referenced by animdata_filter_mask().

◆ EXPANDED_MCLIP

#define EXPANDED_MCLIP ( clip)
Value:
(clip->flag & MCLIP_DATA_EXPAND)
@ MCLIP_DATA_EXPAND

Definition at line 511 of file ED_anim_api.hh.

Referenced by animdata_filter_ds_movieclip(), and make_new_animlistelem().

◆ EXPANDED_OBJC

#define EXPANDED_OBJC ( ob)
Value:
(CHECK_TYPE_INLINE(ob, Object *), (((ob)->nlaflag & OB_ADS_COLLAPSED) == 0))
#define CHECK_TYPE_INLINE(val, type)
@ OB_ADS_COLLAPSED

Definition at line 443 of file ED_anim_api.hh.

Referenced by animdata_filter_dopesheet_ob().

◆ EXPANDED_PALETTE

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

Definition at line 514 of file ED_anim_api.hh.

◆ EXPANDED_SCEC

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

Definition at line 437 of file ED_anim_api.hh.

Referenced by animdata_filter_dopesheet_scene().

◆ FILTER_ARM_OBJD

#define FILTER_ARM_OBJD ( arm)
Value:

Definition at line 456 of file ED_anim_api.hh.

Referenced by animdata_filter_ds_obdata(), and make_new_animlistelem().

◆ FILTER_CACHEFILE_OBJD

#define FILTER_CACHEFILE_OBJD ( cf)
Value:

Definition at line 450 of file ED_anim_api.hh.

Referenced by animdata_filter_ds_cachefile(), and make_new_animlistelem().

◆ FILTER_CAM_OBJD

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

Definition at line 449 of file ED_anim_api.hh.

Referenced by animdata_filter_ds_obdata(), and make_new_animlistelem().

◆ FILTER_CUR_OBJD

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

Definition at line 452 of file ED_anim_api.hh.

Referenced by animdata_filter_ds_obdata(), and make_new_animlistelem().

◆ FILTER_CURVES_OBJD

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

Definition at line 460 of file ED_anim_api.hh.

Referenced by animdata_filter_ds_obdata(), and make_new_animlistelem().

◆ FILTER_LAM_OBJD

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

Definition at line 448 of file ED_anim_api.hh.

Referenced by animdata_filter_ds_obdata(), and make_new_animlistelem().

◆ FILTER_LATTICE_OBJD

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

Definition at line 458 of file ED_anim_api.hh.

Referenced by animdata_filter_ds_obdata(), and make_new_animlistelem().

◆ FILTER_LIGHTPROBE_OBJD

#define FILTER_LIGHTPROBE_OBJD ( probe)
Value:

Definition at line 463 of file ED_anim_api.hh.

Referenced by animdata_filter_ds_obdata(), and make_new_animlistelem().

◆ FILTER_LS_SCED

#define FILTER_LS_SCED ( linestyle)
Value:
((linestyle->flag & LS_DS_EXPAND))
@ LS_DS_EXPAND

Definition at line 440 of file ED_anim_api.hh.

Referenced by animdata_filter_ds_linestyle(), and make_new_animlistelem().

◆ FILTER_MAT_OBJD

#define FILTER_MAT_OBJD ( ma)
Value:

Definition at line 447 of file ED_anim_api.hh.

Referenced by animdata_filter_ds_material(), and make_new_animlistelem().

◆ FILTER_MBALL_OBJD

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

Definition at line 455 of file ED_anim_api.hh.

Referenced by animdata_filter_ds_obdata().

◆ FILTER_MESH_OBJD

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

Definition at line 457 of file ED_anim_api.hh.

Referenced by animdata_filter_ds_obdata(), and make_new_animlistelem().

◆ FILTER_NTREE_DATA

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

Definition at line 466 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)
Value:

Definition at line 453 of file ED_anim_api.hh.

Referenced by animdata_filter_ds_particles(), and make_new_animlistelem().

◆ FILTER_POINTS_OBJD

#define FILTER_POINTS_OBJD ( pt)
Value:

Definition at line 461 of file ED_anim_api.hh.

Referenced by animdata_filter_ds_obdata(), and make_new_animlistelem().

◆ FILTER_SKE_OBJD

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

Definition at line 446 of file ED_anim_api.hh.

Referenced by animdata_filter_ds_keyanim(), and make_new_animlistelem().

◆ FILTER_SPK_OBJD

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

Definition at line 459 of file ED_anim_api.hh.

Referenced by animdata_filter_ds_obdata(), and make_new_animlistelem().

◆ FILTER_TEX_DATA

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

Definition at line 468 of file ED_anim_api.hh.

Referenced by animdata_filter_ds_texture(), and make_new_animlistelem().

◆ FILTER_VOLUME_OBJD

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

Definition at line 462 of file ED_anim_api.hh.

Referenced by animdata_filter_ds_obdata(), and make_new_animlistelem().

◆ FILTER_WOR_SCED

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

Definition at line 439 of file ED_anim_api.hh.

Referenced by animdata_filter_ds_world(), and make_new_animlistelem().

◆ NLATRACK_FIRST_TOP

#define NLATRACK_FIRST_TOP ( ac)

◆ NLATRACK_HEIGHT

#define NLATRACK_HEIGHT ( snla)
Value:
(((snla) && ((snla)->flag & SNLA_NOSTRIPCURVES)) ? (0.8f * U.widget_unit) : \
(1.2f * U.widget_unit))
@ SNLA_NOSTRIPCURVES
#define U

Definition at line 528 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 538 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 531 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 )
Value:
(-NLATRACK_FIRST_TOP(ac) + NLATRACK_STEP(((SpaceNla *)(ac)->sl)) * (item_amount + 1))
#define NLATRACK_FIRST_TOP(ac)
#define NLATRACK_STEP(snla)

Additional offset to give some room at the end.

Definition at line 534 of file ED_anim_api.hh.

Referenced by draw_nla_main_data(), and nla_track_region_draw().

◆ SEL_ACTC

#define SEL_ACTC ( actc)
Value:
((actc->flag & ACT_SELECTED))
@ ACT_SELECTED

Definition at line 471 of file ED_anim_api.hh.

◆ SEL_AGRP

#define SEL_AGRP ( agrp)

◆ SEL_ANIMDATA

#define SEL_ANIMDATA ( adt)
Value:
(adt->flag & ADT_UI_SELECTED)
@ ADT_UI_SELECTED

Definition at line 517 of file ED_anim_api.hh.

Referenced by animdata_filter_shapekey(), and animfilter_block_data().

◆ SEL_FCU

#define SEL_FCU ( fcu)

◆ SEL_GPL

#define SEL_GPL ( gpl)

◆ SEL_MASKLAY

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

Definition at line 504 of file ED_anim_api.hh.

Referenced by animdata_filter_mask_data().

◆ SEL_NLT

#define SEL_NLT ( nlt)
Value:
(nlt->flag & NLATRACK_SELECTED)
@ NLATRACK_SELECTED

Definition at line 507 of file ED_anim_api.hh.

Referenced by animfilter_nla(), and rearrange_animchannel_add_to_islands().

◆ SEL_OBJC

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

Definition at line 442 of file ED_anim_api.hh.

◆ SEL_SCEC

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

Definition at line 436 of file ED_anim_api.hh.

◆ SEL_SHAPEKEY

#define SEL_SHAPEKEY ( kb)
Value:
(kb->flag & KEYBLOCK_SEL)
@ KEYBLOCK_SEL

Definition at line 490 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 936 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 938 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_DSLIGHTPROBE 
ANIMTYPE_SHAPEKEY 
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 175 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 239 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 264 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 636 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 660 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 646 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 72 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 867 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 366 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 1095 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 1259 of file ED_anim_api.hh.

Function Documentation

◆ ANIM_active_action_from_area()

◆ 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 831 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 363 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(), blender::ed::transform::recalcData_actedit(), and blender::ed::transform::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 3987 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_containers(), animchannels_delete_exec(), animchannels_enable_exec(), animchannels_group_channels(), animchannels_group_exec(), animchannels_rearrange_exec(), animchannels_ungroup_exec(), append_nla_strip_snap_target(), 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(), blender::ed::transform::createTransActionData(), blender::ed::transform::createTransGraphEditData(), blender::ed::transform::createTransNlaData(), debug_channel_list_exec(), 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(), ensure_change_frame_keylist(), equalize_graph_keys(), gaussian_smooth_allocate_operator_data(), gaussian_smooth_graph_keys(), get_active_fcurve_channel(), blender::ed::graph::get_editable_fcurves(), 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(), 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(), blender::ed::transform::nlatrack_truncate_temporary_tracks(), nlatracks_pushdown_exec(), ob_keyframes_loop(), ob_to_keylist(), paste_action_keys(), paste_graph_keys(), blender::ed::transform::posttrans_action_clean(), rearrange_animchannels_filter_visible(), rearrange_gpencil_channels(), rearrange_grease_pencil_channels(), blender::ed::transform::recalcData_actedit(), blender::ed::transform::recalcData_graphedit(), 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(), slot_channels_move_to_new_action_exec(), snap_action_keys(), snap_graph_keys(), blender::ed::transform::special_aftertrans_update__actedit(), blender::ed::transform::special_aftertrans_update__graph(), blender::ed::transform::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 463 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(), action_slot_summary_to_keylist(), 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_containers(), animchannels_delete_exec(), animchannels_enable_exec(), animchannels_group_channels(), animchannels_group_exec(), animchannels_rearrange_exec(), animchannels_ungroup_exec(), append_nla_strip_snap_target(), 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(), blender::ed::transform::createTransActionData(), blender::ed::transform::createTransGraphEditData(), blender::ed::transform::createTransNlaData(), debug_channel_list_exec(), 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(), ensure_change_frame_keylist(), 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(), keylist_from_graph_editor(), 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(), blender::ed::transform::nlatrack_truncate_temporary_tracks(), nlatracks_pushdown_exec(), ob_keyframes_loop(), ob_to_keylist(), paste_action_keys(), paste_graph_keys(), blender::ed::transform::posttrans_action_clean(), rearrange_gpencil_channels(), blender::ed::transform::recalcData_actedit(), blender::ed::transform::recalcData_graphedit(), 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(), slot_channels_move_to_new_action_exec(), snap_action_keys(), snap_graph_keys(), blender::ed::transform::special_aftertrans_update__actedit(), blender::ed::transform::special_aftertrans_update__graph(), blender::ed::transform::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 411 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, C, 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, bAnimContext::markers, Scene::markers, bAnimContext::obact, bAnimContext::region, ARegion::regiontype, bAnimContext::regiontype, bAnimContext::scene, bAnimContext::sl, bAnimContext::spacetype, ScrArea::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(), append_nla_strip_snap_target(), 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(), blender::ed::transform::createTransActionData(), blender::ed::transform::createTransGraphEditData(), blender::ed::transform::createTransNlaData(), debug_channel_list_exec(), decimate_exec(), drivers_editor_show_exec(), ease_exec(), ed_marker_select_leftright_exec(), ED_scene_markers_get(), ensure_change_frame_keylist(), 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(), keylist_from_dopesheet(), keylist_from_graph_editor(), 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(), slot_channels_move_to_new_action_exec(), blender::ed::transform::special_aftertrans_update__actedit(), blender::ed::transform::special_aftertrans_update__graph(), blender::ed::transform::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 356 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_animfilter_action_slot()

size_t ANIM_animfilter_action_slot ( bAnimContext * ac,
ListBase * anim_data,
blender::animrig::Action & action,
blender::animrig::Slot & slot,
eAnimFilter_Flags filter_mode,
ID * animated_id )

Add the channel and sub-channels for an Action Slot to anim_data, filtered according to filter_mode.

Parameters
actionthe action containing the slot to generate the channels for.
slotthe slot to generate the channels for.
filter_modethe filters to use for deciding what channels get included.
animated_idthe particular animated ID that the slot channels are being generated for. This is needed for filtering channels based on bone selection, and also for resolving the names of animated properties. This should never be null, but it's okay(ish) if it's an ID not actually animated by the slot, in which case it will act as a fallback in case an ID actually animated by the slot can't be found.
Returns
The number of items added to anim_data.

Definition at line 1615 of file anim_filter.cc.

References blender::animrig::action_slot_get_id_best_guess(), ANIMCHANNEL_NEW_CHANNEL, animfilter_act_group(), ANIMFILTER_ACTGROUPED, animfilter_fcurves_span(), ANIMFILTER_FOREDIT, ANIMFILTER_LIST_CHANNELS, ANIMFILTER_LIST_VISIBLE, ANIMFILTER_SEL, ANIMFILTER_UNSEL, ANIMTYPE_ACTION_SLOT, BLI_assert, bAnimContext::bmain, blender::animrig::Channelbag::channel_groups(), blender::animrig::channelbag_for_action_slot(), bAnimContext::dopesheet_mode, bActionGroup::fcurve_range_length, bActionGroup::fcurve_range_start, blender::animrig::Channelbag::fcurves(), ActionSlot::handle, bAction::id, ID_IS_LINKED, ID_IS_OVERRIDE_LIBRARY, blender::animrig::Slot::is_expanded(), blender::animrig::Slot::is_selected(), SACTCONT_ACTION, SPACE_ACTION, and bAnimContext::spacetype.

Referenced by action_slot_summary_to_keylist(), animfilter_action(), and animfilter_action_slots().

◆ ANIM_center_frame()

◆ ANIM_channel_action_get()

bAction * ANIM_channel_action_get ( const bAnimListElem * ale)

◆ ANIM_channel_debug_print_info()

◆ 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 5179 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_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, 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, U, 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 6084 of file anim_channels_defines.cc.

References acf_action_slot_idtype_icon(), 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(), But, C, CHANNEL_COLOR_RECT_MARGIN, CHANNEL_COLOR_RECT_WIDTH, bAnimListElem::data, draw_grease_pencil_layer_widgets(), draw_setting_widget(), ELEM, blender::ui::Emboss, AnimData::flag, bGPdata::flag, SpaceAction::flag, SpaceGraph::flag, bAnimChannelType::get_channel_color, bAnimChannelType::get_offset, GP_DATA_ANNOTATIONS, GP_LAYER_ONIONSKIN, 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(), blender::wm::InvokeDefault, View2D::mask, NA_RENAME, bAnimChannelType::name_prop, NC_ANIMATION, ND_ANIMCHAN, blender::ui::None, 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_discrete(), 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, Text, bAnimListElem::type, UI_block_emboss_set(), UI_but_active_only(), UI_but_func_set(), UI_but_operator_ptr_ensure(), UI_icon_draw(), UI_SCALE_FAC, UI_UNIT_X, uiDefAutoButR(), uiDefButR(), uiDefIconButO(), ARegion::v2d, ARegion::winx, WM_event_add_notifier(), 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_draw_scene_strip_range()

◆ 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 954 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 956 of file fmodifier_ui.cc.

References active, 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 950 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 985 of file fmodifier_ui.cc.

References BKE_fcurve_handles_recalc(), BKE_fcurve_is_cyclic(), BLI_addtail(), copy_fmodifier(), FModifier::curve, FModifier::flag, fmodifier_copypaste_buf, FMODIFIER_FLAG_ACTIVE, 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 811 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 96 of file graph_buttons.cc.

References C, and 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 103 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(), blender::ed::transform::recalcData_actedit(), and blender::ed::transform::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 929 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 222 of file nla_buttons.cc.

References ANIM_nla_context_strip_ptr(), C, 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 208 of file nla_buttons.cc.

References C, and 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 213 of file nla_buttons.cc.

References ANIM_nla_context_track_ptr(), C, and PointerRNA::data.

◆ ANIM_nla_context_track_ptr()

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

Definition at line 203 of file nla_buttons.cc.

References C, and nla_panel_context().

Referenced by ANIM_nla_context_track(), and screen_ctx_active_nla_track().

◆ ANIM_nla_mapping_allowed()

◆ ANIM_nla_mapping_apply_fcurve()

void ANIM_nla_mapping_apply_fcurve ( AnimData * adt,
FCurve * fcu,
bool restore,
bool only_keys )

Apply/Unapply NLA mapping to all keyframes in the nominated F-Curve

Parameters
restoreWhether to map points back to non-mapped time.
only_keysWhether to only adjust the location of the center point of beztriples.

TODO: this is only used by fcurve_to_keylist() at this point. Perhaps with some refactoring we can make fcurve_to_keylist() use ANIM_nla_mapping_apply_if_needed_fcurve() instead, and then we can get rid of this.

Definition at line 374 of file anim_draw.cc.

References ANIM_fcurve_keyframes_loop(), bezt_nlamapping_apply(), bezt_nlamapping_restore(), BLI_listbase_is_empty(), KeyframeEditData::data, KeyframeEditData::i1, and AnimData::nla_tracks.

Referenced by ANIM_nla_mapping_apply_if_needed_fcurve(), and fcurve_to_keylist().

◆ ANIM_nla_mapping_apply_if_needed_fcurve()

◆ ANIM_nla_tweakedit_remap()

◆ 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 236 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_DSLIGHTPROBE, 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_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, data, FCURVE_ACTIVE, filter, 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 5174 of file anim_channels_defines.cc.

References U.

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 ( )

Definition at line 5169 of file anim_channels_defines.cc.

References U.

Referenced by animchannels_channel_get(), and animchannels_mouseclick_invoke().

◆ 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_build_motionpath_targets()

void animviz_build_motionpath_targets ( Object * ob,
blender::Vector< MPathTarget * > & r_targets )

◆ animviz_calc_motionpaths()

void animviz_calc_motionpaths ( Depsgraph * depsgraph,
Main * bmain,
Scene * scene,
blender::MutableSpan< MPathTarget * > targets,
eAnimvizCalcRange range,
bool restore )

◆ animviz_depsgraph_build()

◆ animviz_free_motionpath_targets()

void animviz_free_motionpath_targets ( blender::Vector< MPathTarget * > & targets)

Free the elements of the vector populated with animviz_build_motionpath_targets. After this function the Vector will have a length of 0.

Definition at line 124 of file anim_motion_paths.cc.

References blender::Vector< T, InlineBufferCapacity, Allocator >::clear_and_shrink(), and MEM_freeN().

Referenced by ED_pose_recalculate_paths(), and blender::ed::object::motion_paths_recalc().

◆ animviz_motionpath_compute_range()

◆ ED_actedit_animdata_from_context()

◆ ED_anim_ale_fcurve_delete()

◆ 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 38 of file graph_utils.cc.

References BKE_area_find_region_type(), C, View2D::cur, ED_region_visibility_change_update(), ListBase::first, ARegion::flag, SpaceGraph::mode, printf, RGN_FLAG_HIDDEN, RGN_TYPE_UI, RGN_TYPE_WINDOW, SIPO_MODE_DRIVERS, ScrArea::spacedata, 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 1452 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 5956 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  )

References 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 312 of file anim_ipo_utils.cc.

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

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 46 of file anim_ipo_utils.cc.

References FCurve::array_index, BLI_assert, BLI_assert_unreachable, BLI_snprintf_utf8(), BLI_sprintfN(), BLI_str_quoted_substr(), BLI_strncpy_utf8(), FCURVE_DISABLED, FCurve::flag, GS, ID_NT, ID_SCE, input, MEM_freeN(), bNodeSocket::name, name, blender::bke::node_find_interface_input_by_identifier(), blender::bke::node_find_node(), NodesModifierData::node_group, 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_, and SNPRINTF_UTF8.

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 53 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().