56#include "RNA_prototypes.hh"
93#define EXTRA_SCROLL_PAD 100.0f
96#define INDENT_STEP_SIZE (0.35f * U.widget_unit)
99#define GET_ACF_FLAG_PTR(ptr, type) ((*(type) = sizeof(ptr)), &(ptr))
191 const int colorOffset = 10 - 10 * indent;
270 switch (ntree->
type) {
306 if (action->wrap().is_action_layered()) {
307 offset += short(0.35f *
U.widget_unit);
329 offset +=
U.widget_unit;
333 offset += short(0.7f *
U.widget_unit);
338 offset += short(0.7f *
U.widget_unit);
356 ID *
id =
static_cast<ID *
>(ale->
data);
372 return (*r_prop !=
nullptr);
384 return (*r_prop !=
nullptr);
450 box.
ymin = yminc - 2;
536 return ICON_SCENE_DATA;
654 return ICON_OUTLINER_OB_LIGHT;
656 return ICON_OUTLINER_OB_MESH;
658 return ICON_OUTLINER_OB_CAMERA;
660 return ICON_OUTLINER_OB_CURVE;
662 return ICON_OUTLINER_OB_META;
664 return ICON_OUTLINER_OB_LATTICE;
666 return ICON_OUTLINER_OB_SPEAKER;
668 return ICON_OUTLINER_OB_LIGHTPROBE;
670 return ICON_OUTLINER_OB_ARMATURE;
672 return ICON_OUTLINER_OB_FONT;
674 return ICON_OUTLINER_OB_SURFACE;
676 return ICON_OUTLINER_OB_CURVES;
678 return ICON_OUTLINER_OB_POINTCLOUD;
680 return ICON_OUTLINER_OB_VOLUME;
682 return ICON_OUTLINER_OB_EMPTY;
684 return ICON_OUTLINER_OB_GREASEPENCIL;
686 return ICON_OBJECT_DATA;
708 return (*r_prop !=
nullptr);
877 return (*r_prop !=
nullptr);
964 const int8_t color_index = agrp->
customCol;
965 if (color_index == 0) {
970 if (color_index < 0) {
971 wire_color = &agrp->
cs;
975 wire_color = &btheme->
tarm[(color_index - 1)];
978 r_color[0] = wire_color->
solid[0];
979 r_color[1] = wire_color->
solid[1];
980 r_color[2] = wire_color->
solid[2];
1055 const size_t num_chars_copied = fcurve_name.copy(
name, std::string::npos);
1056 name[num_chars_copied] =
'\0';
1082 return (*r_prop !=
nullptr);
1276 "NLA Controls Expander",
1319 "NLA Control F-Curve",
1405 "Ob-Layered-Action Filler",
1439 switch (num_users) {
1459 return (*r_prop !=
nullptr);
1464 return ICON_ACTION_SLOT;
1714 return ICON_MATERIAL_DATA;
1773 "Material Data Expander",
1797 return ICON_LIGHT_DATA;
1884 return ICON_TEXTURE_DATA;
1950 "Texture Data Expander",
2024 if (cache_file->
adt) {
2037 "Cache File Expander",
2061 return ICON_CAMERA_DATA;
2151 return ICON_FONT_DATA;
2153 return ICON_SURFACE_DATA;
2155 return ICON_CURVE_DATA;
2243 return ICON_SHAPEKEY_DATA;
2321 "Shape Key Expander",
2345 return ICON_WORLD_DATA;
2428 return ICON_PARTICLE_DATA;
2487 "Particle Data Expander",
2511 return ICON_META_DATA;
2574 "Metaball Expander",
2598 return ICON_ARMATURE_DATA;
2661 "Armature Expander",
2685 return ICON_NODETREE;
2755 "Node Tree Expander",
2779 return ICON_LINE_DATA;
2826 if (linestyle->
adt) {
2838 "Line Style Expander",
2862 return ICON_MESH_DATA;
2950 return ICON_LATTICE_DATA;
3038 return ICON_SPEAKER;
3121 return ICON_CURVES_DATA;
3208 return ICON_POINTCLOUD_DATA;
3259 if (pointcloud->
adt) {
3271 "PointCloud Expander",
3295 return ICON_VOLUME_DATA;
3383 switch (probe->
type) {
3385 return ICON_LIGHTPROBE_SPHERE;
3387 return ICON_LIGHTPROBE_PLANE;
3389 return ICON_LIGHTPROBE_VOLUME;
3391 return ICON_LIGHTPROBE_SPHERE;
3455 "LightProbe Expander",
3479 return ICON_OUTLINER_DATA_GREASEPENCIL;
3538 "GPencil DS Expander",
3562 return ICON_SEQUENCE;
3609 if (clip->
adt !=
nullptr) {
3621 "Movieclip Expander",
3665 if (kb && kb->
name[0]) {
3669 return (*r_prop !=
nullptr);
3762 return ICON_OUTLINER_DATA_GREASEPENCIL;
3800 return (*r_prop !=
nullptr);
3942 offset += node->wrap().depth() * short(0.7f *
U.widget_unit);
3952 if (layer &&
name) {
3962 if (ale->
data ==
nullptr) {
3969 return (*r_prop !=
nullptr);
4037 const LayerGroup &group = *
static_cast<LayerGroup *
>(ale->
data);
4038 int icon = ICON_GREASEPENCIL_LAYER_GROUP;
4040 icon = ICON_LAYERGROUP_COLOR_01 + group.color_tag;
4055 if (layer_group &&
name) {
4092 "Grease Pencil Datablock",
4113 "Grease Pencil Layer",
4134 "Grease Pencil Layer Group",
4165 return ICON_MOD_MASK;
4242 if (masklay &&
name) {
4254 return (*r_prop !=
nullptr);
4340 bool nonSolo =
false;
4371 return (*r_prop !=
nullptr);
4506 return ICON_ACTION_TWEAK;
4596 return (*r_prop !=
nullptr);
4661 "NLA Active Action",
4757 "ANIMTYPE_FILLACT_LAYERED does not match ACF_FILLANIM");
4759 "ANIMTYPE_ACTION_SLOT does not match ACF_ACTION_SLOT");
4766 if (ale ==
nullptr) {
4803 return "ALWAYS_VISIBLE";
4806 return "unknown setting";
4814 for (; indent_level > 0; indent_level--) {
4820 printf(
"<Invalid channel - nullptr>\n");
4825 printf(
"ChanType: <Unknown - %d>\n", ale->
type);
4857 bool is_neg =
false;
4858 const int setting_flag = acf->
setting_flag(&ac, setting, &is_neg);
4860 short setting_type = 0;
4861 const void *setting_ptr = acf->
setting_ptr(ale, setting, &setting_type);
4863 bool setting_value =
false;
4864 switch (setting_type) {
4866 const int as_int = *
static_cast<const int *
>(setting_ptr);
4867 setting_value = bool(
as_int & setting_flag) != is_neg;
4870 case sizeof(short): {
4871 const short as_short = *
static_cast<const short *
>(setting_ptr);
4872 setting_value = bool(as_short &
short(setting_flag)) != is_neg;
4880 if (!setting_value) {
4883 printf(
"%-15s", show_name.c_str());
4898 return reinterpret_cast<bAction *
>(owner);
4927 const int *val = (
int *)
ptr;
4930 return ((*val) &
flag) == 0;
4932 return ((*val) &
flag) != 0;
4936 const short *val = (
short *)
ptr;
4939 return ((*val) &
flag) == 0;
4941 return ((*val) &
flag) != 0;
4945 const char *val = (
char *)
ptr;
4948 return ((*val) &
flag) == 0;
4950 return ((*val) &
flag) != 0;
4962#define ACF_SETTING_SET(sval, sflag, smode) \
4965 if (smode == ACHANNEL_SETFLAG_INVERT) { \
4966 (sval) ^= (sflag); \
4968 else if (smode == ACHANNEL_SETFLAG_ADD) { \
4969 (sval) &= ~(sflag); \
4972 (sval) |= (sflag); \
4976 if (smode == ACHANNEL_SETFLAG_INVERT) { \
4977 (sval) ^= (sflag); \
4979 else if (smode == ACHANNEL_SETFLAG_ADD) { \
4980 (sval) |= (sflag); \
4983 (sval) &= ~(sflag); \
5012 int *val = (
int *)
ptr;
5018 short *val = (
short *)
ptr;
5024 char *val = (
char *)
ptr;
5042#define ICON_WIDTH (0.85f * U.widget_unit)
5044#define SLIDER_WIDTH (4 * U.widget_unit)
5046#define RENAME_TEXT_MIN_WIDTH (U.widget_unit)
5048#define GRAPH_COLOR_BAND_WIDTH (0.3f * U.widget_unit)
5050#define GRAPH_ICON_VISIBILITY_OFFSET (GRAPH_COLOR_BAND_WIDTH * 1.5f)
5052#define CHANNEL_COLOR_RECT_WIDTH (0.5f * ICON_WIDTH)
5053#define CHANNEL_COLOR_RECT_MARGIN (2.0f * UI_SCALE_FAC)
5058 size_t channel_index)
5078 if (ale->
bmain ==
nullptr) {
5082 switch (ale->
type) {
5102 if (slot ==
nullptr) {
5118 switch (ale->
type) {
5138 if (yscale_fac < 0.1f) {
5151 return 0.1f *
U.widget_unit;
5171 return 10 *
U.widget_unit;
5176 return 0.8f *
U.widget_unit;
5184 short selected, offset;
5185 float y, ymid, ytext;
5188 if (
ELEM(
nullptr, acf, ale)) {
5201 y = (ymaxc - yminc) / 2 + yminc;
5204 ytext =
y - 0.2f *
U.widget_unit;
5229 offset += short(0.2f *
U.widget_unit);
5356 short draw_sliders = 0;
5357 float ymin_ofs = 0.0f;
5448 if ((draw_sliders) &&
ELEM(ale->
type,
5465 v2d->
cur.
xmax -
float(offset),
5510 ListBase anim_data = {
nullptr,
nullptr};
5538 if (ale_setting->
id) {
5603 ID *
id =
static_cast<ID *
>(id_poin);
5611 ListBase nla_cache = {
nullptr,
nullptr};
5625 &nla_cache, &id_ptr, adt, &anim_eval_context);
5651 if (adt->
action !=
nullptr) {
5671 Key *key =
static_cast<Key *
>(key_poin);
5758 bool usetoggle =
true;
5760 std::optional<StringRef> tooltip;
5779 icon = ICON_HIDE_ON;
5782 tooltip =
TIP_(
"F-Curve visibility in Graph Editor");
5785 tooltip =
TIP_(
"Grease Pencil layer is visible in the viewport");
5788 tooltip =
TIP_(
"Toggle visibility of Channels in Graph Editor for editing");
5793 icon = ICON_UNPINNED;
5794 tooltip =
TIP_(
"Display channel regardless of object selection");
5798 icon = ICON_MODIFIER_OFF;
5799 tooltip =
TIP_(
"Enable F-Curve modifiers");
5804 icon = ICON_RIGHTARROW;
5805 tooltip =
TIP_(
"Make channels grouped under this channel visible");
5810 icon = ICON_SOLO_OFF;
5812 "NLA Track is the only one evaluated in this animation data-block, with all others "
5821 icon = ICON_UNLOCKED;
5824 tooltip =
TIP_(
"Editability of keyframes for this channel");
5827 tooltip =
TIP_(
"Editability of NLA Strips in this track");
5832 icon = (
enabled ? ICON_CHECKBOX_DEHLT : ICON_CHECKBOX_HLT);
5836 tooltip =
TIP_(
"Does F-Curve contribute to result");
5840 "Temporarily disable NLA stack evaluation (i.e. only the active action is evaluated)");
5844 "Show all keyframes during animation playback and enable all frames for editing "
5845 "(uncheck to use only the current keyframe during animation playback and editing)");
5848 tooltip =
TIP_(
"Do channels contribute to result (toggle channel muting)");
5854 icon = ICON_UNPINNED;
5857 tooltip =
TIP_(
"Display action without any time remapping (when unpinned)");
5861 tooltip = std::nullopt;
5866 tooltip = std::nullopt;
5891 uiBut *but =
nullptr;
5903 static_cast<int *
>(
ptr),
5919 static_cast<short *
>(
ptr),
5935 static_cast<char *
>(
ptr),
5979 UI_but_disable(but,
"Cannot edit this property from a linked data-block");
6004 const short channel_height,
6005 const int array_index)
6010 if (layer ==
nullptr) {
6027 &
ptr, onion_skinning_prop);
6029 &id_ptr, onion_skinning_rna_path->c_str(), &
ptr, &onion_skinning_prop))
6033 onion_skinning_prop,
6049 &
ptr, layer_mask_prop);
6089 size_t channel_index)
6098 if (
ELEM(
nullptr, acf, ale, block)) {
6103 short offset = rect->
xmin;
6158 if (is_being_renamed) {
6168 const short width = ac->
region->
winx - offset - (margin_x * 2);
6209 offset = int(rect->
xmax);
6212 if (!is_being_renamed) {
6213 short draw_sliders = 0;
6241 if (show_group_colors) {
6253 rect->
ymin + rect_margin,
6254 rect->
xmax - rect_margin,
6255 rect->
ymax - rect_margin);
6326 "NLA_OT_action_pushdown",
6336 RNA_int_set(opptr_b,
"track_index", channel_index);
6360 if (((draw_sliders) &&
ELEM(ale->
type,
6410 std::optional<std::string> rna_path;
6411 int array_index = 0;
6422 Key *key =
reinterpret_cast<Key *
>(ale->
id);
Functions and classes to work with Actions.
Functions to work with AnimData.
Functions to modify FCurves.
Functions to insert, delete or modify keyframes.
AnimData * BKE_animdata_from_id(const ID *id)
void BKE_animsys_free_nla_keyframing_context_cache(struct ListBase *cache)
AnimationEvalContext BKE_animsys_eval_context_construct(struct Depsgraph *depsgraph, float eval_time) ATTR_WARN_UNUSED_RESULT
struct NlaKeyframingContext * BKE_animsys_get_nla_keyframing_context(struct ListBase *cache, struct PointerRNA *ptr, struct AnimData *adt, const struct AnimationEvalContext *anim_eval_context)
ReportList * CTX_wm_reports(const bContext *C)
Depsgraph * CTX_data_depsgraph_pointer(const bContext *C)
Scene * CTX_data_scene(const bContext *C)
Main * CTX_data_main(const bContext *C)
Low-level operations for grease pencil.
std::optional< std::string > BKE_keyblock_curval_rnapath_get(const Key *key, const KeyBlock *kb)
bool BKE_id_is_editable(const Main *bmain, const ID *id)
void BKE_nlatrack_solo_toggle(AnimData *adt, NlaTrack *nlt)
float BKE_nla_tweakedit_remap(AnimData *adt, float cframe, eNlaTime_ConvertModes mode)
#define BLI_assert_unreachable()
#define BLI_assert_msg(a, msg)
BLI_INLINE bool BLI_listbase_is_empty(const ListBase *lb)
MINLINE int round_fl_to_int(float a)
MINLINE void rgb_float_to_uchar(unsigned char r_col[3], const float col_f[3])
MINLINE void copy_v3_v3(float r[3], const float a[3])
BLI_INLINE float BLI_rctf_cent_y(const struct rctf *rct)
BLI_INLINE int BLI_rcti_size_x(const struct rcti *rct)
BLI_INLINE float BLI_rctf_size_y(const struct rctf *rct)
void BLI_str_tolower_ascii(char *str, size_t len) ATTR_NONNULL(1)
size_t size_t size_t BLI_snprintf_utf8(char *__restrict dst, size_t dst_maxncpy, const char *__restrict format,...) ATTR_NONNULL(1
char * BLI_strncpy_utf8(char *__restrict dst, const char *__restrict src, size_t dst_maxncpy) ATTR_NONNULL(1
#define STRNCPY_UTF8(dst, src)
#define POINTER_FROM_INT(i)
#define POINTER_AS_INT(i)
int rect_width(int rect[2][2])
void DEG_id_tag_update(ID *id, unsigned int flags)
void DEG_relations_tag_update(Main *bmain)
@ ID_RECALC_ANIMATION_NO_FLUSH
@ ADS_FLAG_SUMMARY_COLLAPSED
@ ADT_CURVES_ALWAYS_VISIBLE
@ ADT_NLA_SKEYS_COLLAPSED
@ GP_LAYER_TREE_NODE_EXPANDED
@ GP_LAYER_TREE_NODE_LOCKED
@ GP_LAYER_TREE_NODE_MUTE
@ GP_LAYER_TREE_NODE_HIDE
@ GP_LAYER_TREE_NODE_SELECT
@ GREASE_PENCIL_ANIM_CHANNEL_EXPANDED
Object is a sort of wrapper for general info.
#define BASE_SELECTED(v3d, base)
@ USER_ANIM_SHOW_CHANNEL_GROUP_COLORS
@ ANIMTYPE_GREASE_PENCIL_LAYER
@ ANIMTYPE_FILLACT_LAYERED
@ ANIMTYPE_GREASE_PENCIL_LAYER_GROUP
@ ACHANNEL_SETTING_ALWAYS_VISIBLE
@ ACHANNEL_SETTING_PINNED
@ ACHANNEL_SETTING_PROTECT
@ ACHANNEL_SETTING_VISIBLE
@ ACHANNEL_SETTING_EXPAND
@ ACHANNEL_SETTING_MOD_OFF
@ ACHANNEL_SETTING_SELECT
void nla_action_get_color(AnimData *adt, bAction *act, float color[4])
@ ANIMFILTER_DATA_VISIBLE
@ ANIMFILTER_LIST_CHANNELS
@ GPU_SHADER_3D_UNIFORM_COLOR
void GPU_line_width(float width)
void GPU_blend(GPUBlend blend)
Read Guarded memory(de)allocation.
void UI_but_func_set(uiBut *but, std::function< void(bContext &)> func)
void UI_but_disable(uiBut *but, const char *disabled_hint)
uiBut * uiDefButR(uiBlock *block, ButType type, int retval, std::optional< blender::StringRef > str, int x, int y, short width, short height, PointerRNA *ptr, blender::StringRefNull propname, int index, float min, float max, std::optional< blender::StringRef > tip)
void UI_draw_roundbox_4fv(const rctf *rect, bool filled, float rad, const float col[4])
void UI_block_emboss_set(uiBlock *block, blender::ui::EmbossType emboss)
uiBut * uiDefIconButBitI(uiBlock *block, ButType type, int bit, int retval, int icon, int x, int y, short width, short height, int *poin, float min, float max, std::optional< blender::StringRef > tip)
void UI_fontstyle_draw_simple(const uiFontStyle *fs, float x, float y, const char *str, const uchar col[4])
uiBut * uiDefIconButBitS(uiBlock *block, ButType type, int bit, int retval, int icon, int x, int y, short width, short height, short *poin, float min, float max, std::optional< blender::StringRef > tip)
void UI_draw_roundbox_corner_set(int type)
uiBut * uiDefIconButBitC(uiBlock *block, ButType type, int bit, int retval, int icon, int x, int y, short width, short height, char *poin, float min, float max, std::optional< blender::StringRef > tip)
uiBut * uiDefIconButO(uiBlock *block, ButType type, blender::StringRefNull opname, blender::wm::OpCallContext opcontext, int icon, int x, int y, short width, short height, std::optional< blender::StringRef > tip)
uiBut * uiDefAutoButR(uiBlock *block, PointerRNA *ptr, PropertyRNA *prop, int index, std::optional< blender::StringRef > name, int icon, int x, int y, int width, int height)
void UI_draw_roundbox_3fv_alpha(const rctf *rect, bool filled, float rad, const float col[3], float alpha)
uiBut * UI_context_active_but_prop_get(const bContext *C, PointerRNA *r_ptr, PropertyRNA **r_prop, int *r_index)
PointerRNA * UI_but_operator_ptr_ensure(uiBut *but)
bool UI_but_active_only(const bContext *C, ARegion *region, uiBlock *block, uiBut *but)
void(*)(bContext *C, void *argN, void *arg2) uiButHandleNFunc
void UI_but_funcN_set(uiBut *but, uiButHandleNFunc funcN, void *argN, void *arg2, uiButArgNFree func_argN_free_fn=MEM_freeN, uiButArgNCopy func_argN_copy_fn=MEM_dupallocN)
void UI_but_flag_enable(uiBut *but, int flag)
void UI_icon_draw(float x, float y, int icon_id)
int UI_icon_from_idcode(int idcode)
void UI_GetThemeColor3fv(int colorid, float col[3])
@ TH_DOPESHEET_CHANNELSUBOB
void UI_GetThemeColorShade3fv(int colorid, int offset, float col[3])
void UI_GetThemeColor4ubv(int colorid, unsigned char col[4])
#define UI_TIME_SCRUB_MARGIN_Y
float UI_view2d_scale_get_y(const View2D *v2d)
static void ANIM_init_channel_typeinfo_data()
static int acf_dsvolume_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
static bAnimChannelType ACF_DSWOR
static void acf_nla_controls_backdrop(bAnimContext *ac, bAnimListElem *ale, float yminc, float ymaxc)
static bAnimChannelType ACF_DSPART
static bAnimChannelType ACF_DSNTREE
static int acf_dsgpencil_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
static short acf_generic_group_offset(bAnimContext *ac, bAnimListElem *ale)
static int acf_dscachefile_setting_flag(bAnimContext *ac, eAnimChannel_Settings setting, bool *r_neg)
static void acf_action_slot_name(bAnimListElem *ale, char *r_name)
float ANIM_UI_get_channels_total_height(View2D *v2d, const int item_count)
static bAnimChannelType ACF_GPL_LEGACY
static void * acf_dslat_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings setting, short *r_type)
static int acf_object_icon(bAnimListElem *ale)
static bool acf_scene_setting_valid(bAnimContext *ac, bAnimListElem *, eAnimChannel_Settings setting)
static void * acf_dsmball_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings setting, short *r_type)
static int acf_dspointcloud_icon(bAnimListElem *)
static void acf_object_name(bAnimListElem *ale, char *name)
static bAnimChannelType ACF_SCENE
static void acf_nlaaction_backdrop(bAnimContext *ac, bAnimListElem *ale, float yminc, float ymaxc)
static void acf_summary_name(bAnimListElem *, char *name)
static short acf_generic_basic_offset(bAnimContext *ac, bAnimListElem *ale)
static int acf_fillactd_icon(bAnimListElem *)
static int acf_action_slot_icon(bAnimListElem *)
static bAnimChannelType ACF_MASKLAYER
#define GRAPH_ICON_VISIBILITY_OFFSET
#define GET_ACF_FLAG_PTR(ptr, type)
static int acf_group_setting_flag(bAnimContext *ac, eAnimChannel_Settings setting, bool *r_neg)
static bAnimChannelType ACF_NLACURVE
static int acf_dsarm_icon(bAnimListElem *)
static bAnimChannelType ACF_FILLANIM
static int acf_dsmclip_icon(bAnimListElem *)
static void * acf_filldrivers_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings setting, short *r_type)
static int acf_dstex_icon(bAnimListElem *)
static int acf_dscur_icon(bAnimListElem *ale)
static bAnimChannelType ACF_GPD
static bAnimChannelType ACF_DSLAT
static bAnimChannelType ACF_DSLIGHTPROBE
void ANIM_channel_setting_set(bAnimContext *ac, bAnimListElem *ale, eAnimChannel_Settings setting, eAnimChannels_SetFlag mode)
static bool acf_masklay_setting_valid(bAnimContext *, bAnimListElem *, eAnimChannel_Settings setting)
static int acf_dsspk_icon(bAnimListElem *)
float ANIM_UI_get_channel_skip()
void ANIM_channel_draw_widgets(const bContext *C, bAnimContext *ac, bAnimListElem *ale, uiBlock *block, const rctf *rect, size_t channel_index)
static int acf_dscurves_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
static bool acf_nlatrack_name_prop(bAnimListElem *ale, PointerRNA *r_ptr, PropertyRNA **r_prop)
static void acf_nla_curve_name(bAnimListElem *ale, char *name)
static bAnimChannelType ACF_DSVOLUME
static int acf_filldrivers_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
float ANIM_UI_get_keyframe_scale_factor()
static int acf_nlaaction_icon(bAnimListElem *ale)
float ANIM_UI_get_channel_name_width()
static bAnimChannelType ACF_DSMCLIP
static void acf_summary_color(bAnimContext *ac, bAnimListElem *ale, float r_color[3])
static void * acf_dsmat_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings setting, short *r_type)
static int acf_dslinestyle_icon(bAnimListElem *)
static bAnimChannelType ACF_NLATRACK
static int acf_dsgpencil_icon(bAnimListElem *)
void ANIM_channel_debug_print_info(bAnimContext &ac, bAnimListElem *ale, short indent_level)
static void * acf_nlaaction_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings, short *r_type)
static bAnimChannelType ACF_DSPOINTCLOUD
static bool acf_summary_setting_valid(bAnimContext *, bAnimListElem *, eAnimChannel_Settings setting)
static bAnimChannelType ACF_SUMMARY
static void acf_summary_backdrop(bAnimContext *ac, bAnimListElem *ale, float yminc, float ymaxc)
static bool acf_fillactd_setting_valid(bAnimContext *, bAnimListElem *, eAnimChannel_Settings setting)
static int acf_gpl_setting_flag_legacy(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
static int acf_dscachefile_icon(bAnimListElem *ale)
static int acf_dsmball_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
static bool acf_fcurve_setting_valid(bAnimContext *ac, bAnimListElem *, eAnimChannel_Settings setting)
static bAnimChannelType ACF_DSMBALL
static int acf_dslat_icon(bAnimListElem *)
void ANIM_channel_draw(bAnimContext *ac, bAnimListElem *ale, float yminc, float ymaxc, size_t channel_index)
static bAnimChannelType ACF_DSLINESTYLE
static int acf_fcurve_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
static void * acf_dscurves_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings setting, short *r_type)
static void acf_generic_idblock_name(bAnimListElem *ale, char *name)
static int acf_dsntree_icon(bAnimListElem *)
static short acf_generic_indentation_flexible(bAnimContext *, bAnimListElem *ale)
static int acf_dscam_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
static int acf_dscur_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
static bool acf_masklay_name_prop(bAnimListElem *ale, PointerRNA *r_ptr, PropertyRNA **r_prop)
static int acf_action_slot_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
static int acf_dsmclip_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
static bool acf_generic_idfill_name_prop(bAnimListElem *ale, PointerRNA *r_ptr, PropertyRNA **r_prop)
static int acf_dsmesh_icon(bAnimListElem *)
static bool acf_generic_dataexpand_setting_valid(bAnimContext *ac, bAnimListElem *, eAnimChannel_Settings setting)
static bool acf_nlaaction_setting_valid(bAnimContext *, bAnimListElem *ale, eAnimChannel_Settings setting)
static void * acf_shapekey_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings setting, short *r_type)
static bool acf_dsskey_setting_valid(bAnimContext *ac, bAnimListElem *, eAnimChannel_Settings setting)
static void acf_filldrivers_name(bAnimListElem *, char *name)
static bool achannel_is_being_renamed(const bAnimContext *ac, const bAnimChannelType *acf, size_t channel_index)
static void * acf_dsmclip_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings setting, short *r_type)
static void acf_group_name(bAnimListElem *ale, char *name)
static int acf_dslinestyle_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
#define CHANNEL_COLOR_RECT_WIDTH
#define RENAME_TEXT_MIN_WIDTH
static void acf_nla_controls_name(bAnimListElem *, char *name)
static bool acf_fcurve_channel_color(const bAnimListElem *ale, uint8_t r_color[3])
static bool acf_gpl_setting_valid_legacy(bAnimContext *, bAnimListElem *, eAnimChannel_Settings setting)
static int acf_dspart_icon(bAnimListElem *)
static bAnimChannelType ACF_FCURVE
static bAnimChannelType ACF_DSSPK
static void acf_generic_root_color(bAnimContext *, bAnimListElem *, float r_color[3])
static int acf_dsarm_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
float ANIM_UI_get_channel_step()
static void * acf_gpl_setting_ptr_legacy(bAnimListElem *ale, eAnimChannel_Settings, short *r_type)
static void acf_nlatrack_name(bAnimListElem *ale, char *name)
static bool acf_mask_setting_valid(bAnimContext *, bAnimListElem *, eAnimChannel_Settings setting)
static bAnimChannelType ACF_DSTEX
static void achannel_setting_slider_cb(bContext *C, void *id_poin, void *fcu_poin)
static void * acf_nlatrack_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings, short *r_type)
static void * acf_dspointcloud_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings setting, short *r_type)
static int acf_dsmat_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
static short acf_dsntree_offset(bAnimContext *ac, bAnimListElem *ale)
static int acf_dsvolume_icon(bAnimListElem *)
static int acf_shapekey_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
static void acf_nlatrack_color(bAnimContext *, bAnimListElem *ale, float r_color[3])
static void * acf_dstex_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings setting, short *r_type)
static void * acf_dsvolume_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings setting, short *r_type)
static bAnimChannelType ACF_FILLACTD
static int acf_fillanim_icon(bAnimListElem *)
static int acf_dslight_icon(bAnimListElem *)
static bool acf_filldrivers_setting_valid(bAnimContext *, bAnimListElem *, eAnimChannel_Settings setting)
static void acf_group_backdrop(bAnimContext *ac, bAnimListElem *ale, float yminc, float ymaxc)
float ANIM_UI_get_first_channel_top(View2D *v2d)
static bool acf_nla_controls_setting_valid(bAnimContext *, bAnimListElem *, eAnimChannel_Settings setting)
static int acf_dswor_icon(bAnimListElem *)
static void * acf_dsarm_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings setting, short *r_type)
static bAnimChannelType ACF_GPLGROUP
static int acf_filldrivers_icon(bAnimListElem *)
static bAnimChannelType ACF_DSCURVES
static short acf_nodetree_rootType_offset(bNodeTree *ntree)
static void * acf_dsspk_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings setting, short *r_type)
#define ACF_SETTING_SET(sval, sflag, smode)
static bool acf_shapekey_name_prop(bAnimListElem *ale, PointerRNA *r_ptr, PropertyRNA **r_prop)
static int acf_dsmat_icon(bAnimListElem *)
static int acf_mask_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
static void acf_generic_dataexpand_color(bAnimContext *, bAnimListElem *, float r_color[3])
float ANIM_UI_get_channel_height()
static int acf_scene_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
static void acf_nlaaction_name(bAnimListElem *ale, char *name)
static bool acf_object_name_prop(bAnimListElem *ale, PointerRNA *r_ptr, PropertyRNA **r_prop)
static bool acf_action_slot_name_prop(bAnimListElem *ale, PointerRNA *r_ptr, PropertyRNA **r_prop)
static bAnimChannelType ACF_DSGPENCIL
static bool acf_gpl_name_prop_legacy(bAnimListElem *ale, PointerRNA *r_ptr, PropertyRNA **r_prop)
static bAnimChannelType ACF_MASKDATA
static int acf_nla_controls_icon(bAnimListElem *)
static bool acf_shapekey_setting_valid(bAnimContext *, bAnimListElem *, eAnimChannel_Settings setting)
static int acf_gpd_icon(bAnimListElem *)
static bool acf_generic_idblock_name_prop(bAnimListElem *ale, PointerRNA *r_ptr, PropertyRNA **r_prop)
static int acf_dslightprobe_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
static int acf_dsmball_icon(bAnimListElem *)
#define GRAPH_COLOR_BAND_WIDTH
static void * acf_dsntree_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings setting, short *r_type)
static int acf_nlaaction_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
static bAnimChannelType ACF_GROUP
static bAnimChannelType ACF_OBJECT
static void * acf_dscur_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings setting, short *r_type)
static int acf_fillactd_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
static int acf_dsskey_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
static bAnimChannelType ACF_FILLDRIVERS
static short acf_dstex_offset(bAnimContext *, bAnimListElem *)
static int acf_masklay_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
static bool acf_nlatrack_setting_valid(bAnimContext *, bAnimListElem *ale, eAnimChannel_Settings setting)
static int acf_dspart_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
static bool get_actiongroup_color(const bActionGroup *agrp, uint8_t r_color[3])
bAction * ANIM_channel_action_get(const bAnimListElem *ale)
static void * acf_group_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings, short *r_type)
static void acf_generic_channel_backdrop(bAnimContext *ac, bAnimListElem *ale, float yminc, float ymaxc)
static void * acf_fillactd_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings setting, short *r_type)
static bool acf_group_name_prop(bAnimListElem *ale, PointerRNA *r_ptr, PropertyRNA **r_prop)
static void acf_mask_color(bAnimContext *, bAnimListElem *, float r_color[3])
static int acf_summary_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
static bAnimChannelType ACF_NLAACTION
static int acf_dscam_icon(bAnimListElem *)
static bAnimChannelType ACF_DSMAT
static bAnimChannelType ACF_DSCUR
static bool acf_fillanim_setting_valid(bAnimContext *, bAnimListElem *, eAnimChannel_Settings setting)
static void * acf_dspart_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings setting, short *r_type)
static void draw_setting_widget(bAnimContext *ac, bAnimListElem *ale, const bAnimChannelType *acf, uiBlock *block, const int xpos, const int ypos, const eAnimChannel_Settings setting)
static void achannel_nlatrack_solo_widget_cb(bContext *C, void *ale_poin, void *setting_wrap)
static void * acf_mask_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings, short *r_type)
static void * acf_masklay_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings, short *r_type)
static int acf_object_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
static void acf_gpl_name_legacy(bAnimListElem *ale, char *name)
short ANIM_channel_setting_get(bAnimContext *ac, bAnimListElem *ale, eAnimChannel_Settings setting)
static short acf_generic_indentation_0(bAnimContext *, bAnimListElem *)
static void achannel_setting_slider_nla_curve_cb(bContext *C, void *, void *fcu_poin)
static bool acf_group_channel_color(const bAnimListElem *ale, uint8_t r_color[3])
static bool acf_show_channel_colors()
static void achannel_setting_widget_cb(bContext *C, void *ale_npoin, void *setting_wrap)
static void acf_nlatrack_setting_post_update(Main &bmain, const bAnimListElem &, const eAnimChannel_Settings setting)
static bAnimChannelType ACF_DSLIGHT
static bAnimChannelType ACF_DSCACHEFILE
static int acf_dsntree_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
static bAnimChannelType ACF_DSARM
static bool achannel_is_part_of_disconnected_slot(const bAnimListElem *ale)
static void acf_nlaaction_color(bAnimContext *, bAnimListElem *ale, float r_color[3])
static int acf_dslat_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
static void * acf_summary_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings setting, short *r_type)
static bAnimChannelType ACF_GPL
static void acf_generic_root_backdrop(bAnimContext *ac, bAnimListElem *ale, float yminc, float ymaxc)
static bool acf_gpl_channel_color(const bAnimListElem *ale, uint8_t r_color[3])
static int acf_dscurves_icon(bAnimListElem *)
static bAnimChannelType ACF_DSCAM
static bAnimChannelType ACF_DSMESH
static int acf_dslightprobe_icon(bAnimListElem *ale)
static void * acf_scene_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings setting, short *r_type)
static int acf_dsspk_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
static int acf_action_slot_idtype_icon(bAnimListElem *ale)
static bool acf_object_setting_valid(bAnimContext *ac, bAnimListElem *ale, eAnimChannel_Settings setting)
static void * acf_dslinestyle_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings setting, short *r_type)
static void * acf_dsskey_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings setting, short *r_type)
static int acf_scene_icon(bAnimListElem *)
static blender::StringRefNull setting_name(const eAnimChannel_Settings setting)
static int acf_dsmesh_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
static void achannel_setting_slider_shapekey_cb(bContext *C, void *key_poin, void *kb_poin)
float ANIM_UI_get_channel_button_width()
static bool acf_action_slot_setting_valid(bAnimContext *, bAnimListElem *, const eAnimChannel_Settings setting)
static void acf_fcurve_name(bAnimListElem *ale, char *name)
static int acf_mask_icon(bAnimListElem *)
static bool acf_fcurve_name_prop(bAnimListElem *ale, PointerRNA *r_ptr, PropertyRNA **r_prop)
static void * acf_dscachefile_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings setting, short *r_type)
static void draw_grease_pencil_layer_widgets(bAnimListElem *ale, uiBlock *block, const rctf *rect, short &offset, const short channel_height, const int array_index)
static void acf_generic_channel_color(bAnimContext *ac, bAnimListElem *ale, float r_color[3])
static bool acf_gpd_setting_valid(bAnimContext *, bAnimListElem *, eAnimChannel_Settings setting)
static void acf_group_color(bAnimContext *, bAnimListElem *ale, float r_color[3])
static void * acf_dslight_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings setting, short *r_type)
static bool acf_group_setting_valid(bAnimContext *ac, bAnimListElem *, eAnimChannel_Settings setting)
static void * acf_action_slot_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings, short *r_type)
static void * acf_fillanim_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings setting, short *r_type)
static bAnimChannelType ACF_SHAPEKEY
static int acf_dslight_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
static void * acf_nla_controls_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings, short *r_type)
static void * acf_fcurve_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings, short *r_type)
static bAnimChannelType * animchannelTypeInfo[ANIMTYPE_NUM_TYPES]
static void * acf_object_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings setting, short *r_type)
static bool achannel_is_broken(const bAnimListElem *ale)
static short acf_generic_indentation_1(bAnimContext *, bAnimListElem *)
static int acf_dsskey_icon(bAnimListElem *)
static int acf_dswor_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
static void acf_generic_dataexpand_backdrop(bAnimContext *ac, bAnimListElem *ale, float yminc, float ymaxc)
static int acf_nla_controls_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
static void achannel_setting_flush_widget_cb(bContext *C, void *ale_npoin, void *setting_wrap)
static int acf_dspointcloud_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
static int acf_nlatrack_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *neg)
static bAnimChannelType ACF_NLACONTROLS
static bool acf_nlaaction_name_prop(bAnimListElem *ale, PointerRNA *r_ptr, PropertyRNA **r_prop)
static void acf_nla_controls_color(bAnimContext *, bAnimListElem *, float r_color[3])
static void * acf_dscam_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings setting, short *r_type)
static int acf_fillanim_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
static int acf_dstex_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
static void acf_shapekey_name(bAnimListElem *ale, char *name)
static bAnimChannelType ACF_DSSKEY
#define CHANNEL_COLOR_RECT_MARGIN
static void acf_masklay_name(bAnimListElem *ale, char *name)
static void * acf_dswor_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings setting, short *r_type)
static void * acf_dsgpencil_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings setting, short *r_type)
static void * acf_dslightprobe_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings setting, short *r_type)
static void * acf_dsmesh_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings setting, short *r_type)
static bAnimChannelType ACF_ACTION_SLOT
const bAnimChannelType * ANIM_channel_get_typeinfo(const bAnimListElem *ale)
void ANIM_flush_setting_anim_channels(bAnimContext *ac, ListBase *anim_data, bAnimListElem *ale_setting, eAnimChannel_Settings setting, eAnimChannels_SetFlag mode)
void ANIM_animdata_freelist(ListBase *anim_data)
bool ANIM_animdata_get_context(const bContext *C, bAnimContext *ac)
size_t ANIM_animdata_filter(bAnimContext *ac, ListBase *anim_data, const eAnimFilter_Flags filter_mode, void *data, const eAnimCont_Types datatype)
#define ANIM_CHAN_NAME_SIZE
std::string getname_anim_fcurve_for_slot(Main &bmain, const blender::animrig::Slot &slot, FCurve &fcurve)
std::optional< int > getname_anim_fcurve(char *name, ID *id, FCurve *fcu)
BPy_StructRNA * depsgraph
constexpr int64_t size() const
constexpr bool is_empty() const
constexpr bool contains(const T &value) const
constexpr const char * c_str() const
bool is_action_legacy() const
Slot * slot_for_handle(slot_handle_t handle)
Span< ID * > users(Main &bmain) const
static constexpr slot_handle_t unassigned
StringRefNull identifier_without_prefix() const
void * MEM_dupallocN(const void *vmemh)
ccl_device_inline int as_int(const uint i)
ccl_device_inline float2 mask(const MaskType mask, const float2 a)
bool fcurve_frame_has_keyframe(const FCurve *fcu, float frame)
CombinedKeyingResult insert_keyframes(Main *bmain, PointerRNA *struct_pointer, std::optional< StringRefNull > channel_group, const blender::Span< RNAPath > rna_paths, std::optional< float > scene_frame, const AnimationEvalContext &anim_eval_context, eBezTriple_KeyframeType key_type, eInsertKeyFlags insert_key_flags)
Main key-frame insertion API.
bool insert_keyframe_direct(ReportList *reports, PointerRNA ptr, PropertyRNA *prop, FCurve *fcu, const AnimationEvalContext *anim_eval_context, eBezTriple_KeyframeType keytype, NlaKeyframingContext *nla_context, eInsertKeyFlags flag)
Secondary Insert Key-framing API call.
eInsertKeyFlags get_keyframing_flags(Scene *scene)
static short layer_offset(bAnimContext *ac, bAnimListElem *ale)
static void layer_name(bAnimListElem *ale, char *name)
static bool layer_name_prop(bAnimListElem *ale, PointerRNA *r_ptr, PropertyRNA **r_prop)
static int layer_group_icon(bAnimListElem *ale)
static void * data_block_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings, short *r_type)
static bool layer_setting_valid(bAnimContext *, bAnimListElem *, eAnimChannel_Settings setting)
static bool layer_group_setting_valid(bAnimContext *, bAnimListElem *, eAnimChannel_Settings setting)
static int layer_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
static void * layer_group_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings, short *r_type)
static void * layer_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings, short *r_type)
static int data_block_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
static void layer_group_color(bAnimContext *, bAnimListElem *, float r_color[3])
static void layer_group_name(bAnimListElem *ale, char *name)
static void datablock_color(bAnimContext *ac, bAnimListElem *, float r_color[3])
static bool layer_channel_color(const bAnimListElem *ale, uint8_t r_color[3])
float wrap(float value, float max, float min)
PropertyRNA * RNA_struct_type_find_property(StructRNA *srna, const char *identifier)
PropertyRNA * RNA_struct_find_property(PointerRNA *ptr, const char *identifier)
PropertyType RNA_property_type(PropertyRNA *prop)
void RNA_int_set(PointerRNA *ptr, const char *name, int value)
const char * RNA_property_ui_name(const PropertyRNA *prop, const PointerRNA *ptr)
PropertyRNA * RNA_struct_name_property(const StructRNA *type)
PointerRNA RNA_pointer_create_discrete(ID *id, StructRNA *type, void *data)
const char * RNA_property_identifier(const PropertyRNA *prop)
PointerRNA RNA_id_pointer_create(ID *id)
std::optional< std::string > RNA_path_from_ID_to_property(const PointerRNA *ptr, PropertyRNA *prop)
bool RNA_path_resolve_property(const PointerRNA *ptr, const char *path, PointerRNA *r_ptr, PropertyRNA **r_prop)
GreasePencilLayerTreeNode base
GreasePencilLayerTreeNode base
struct ToolSettings * toolsettings
void(* name)(bAnimListElem *ale, char *name)
void(* get_backdrop_color)(bAnimContext *ac, bAnimListElem *ale, float r_color[3])
short(* get_offset)(bAnimContext *ac, bAnimListElem *ale)
bool(* name_prop)(bAnimListElem *ale, PointerRNA *r_ptr, PropertyRNA **r_prop)
void(* draw_backdrop)(bAnimContext *ac, bAnimListElem *ale, float yminc, float ymaxc)
int(* setting_flag)(bAnimContext *ac, eAnimChannel_Settings setting, bool *r_neg)
const char * channel_type_name
bool(* has_setting)(bAnimContext *ac, bAnimListElem *ale, eAnimChannel_Settings setting)
short(* get_indent_level)(bAnimContext *ac, bAnimListElem *ale)
bool(* get_channel_color)(const bAnimListElem *ale, uint8_t r_color[3])
int(* icon)(bAnimListElem *ale)
void(* setting_post_update)(Main &bmain, const bAnimListElem &ale, eAnimChannel_Settings setting)
void *(* setting_ptr)(bAnimListElem *ale, eAnimChannel_Settings setting, short *r_type)
void WM_event_add_notifier(const bContext *C, uint type, void *reference)