Blender V4.3
ED_anim_api.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2008 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
9#pragma once
10
11#include "BLI_sys_types.h"
12#include "BLI_utildefines.h"
13
14#include "DNA_screen_types.h"
15#include "DNA_space_types.h"
16
17#include <optional>
18
19struct AnimData;
20struct Depsgraph;
21struct ID;
22struct ListBase;
23
24struct ARegion;
25struct ARegionType;
26struct FModifier;
27struct Main;
28struct NlaStrip;
29struct NlaTrack;
30struct PanelType;
31struct ReportList;
32struct ScrArea;
33struct SpaceLink;
34struct View2D;
35struct ViewLayer;
36struct rctf;
37struct bContext;
38struct wmKeyConfig;
39
40struct Object;
41struct Scene;
42
43struct bDopeSheet;
44
45struct FCurve;
46struct FModifier;
47struct bAction;
48
49struct uiBlock;
50
51struct PointerRNA;
52struct PropertyRNA;
53
54/* ************************************************ */
55/* ANIMATION CHANNEL FILTERING */
56/* `anim_filter.cc` */
57
58/* -------------------------------------------------------------------- */
87
133
136/* -------------------------------------------------------------------- */
209
212 ALE_NONE = 0, /* no keyframe data */
213 ALE_FCURVE, /* F-Curve */
214 ALE_GPFRAME, /* Grease Pencil Frames (Legacy) */
215 ALE_MASKLAY, /* Mask */
216 ALE_NLASTRIP, /* NLA Strips */
217
218 ALE_ALL, /* All channels summary */
219 ALE_SCE, /* Scene summary */
220 ALE_OB, /* Object summary */
221 ALE_ACT, /* Action summary (legacy). */
222 ALE_GROUP, /* Action Group summary (legacy). */
223 ALE_ACTION_LAYERED, /* Action summary (layered). */
224 ALE_ACTION_SLOT, /* Action slot summary. */
225
226 ALE_GREASE_PENCIL_CEL, /* Grease Pencil Cels. */
227 ALE_GREASE_PENCIL_DATA, /* Grease Pencil Cels summary. */
228 ALE_GREASE_PENCIL_GROUP, /* Grease Pencil Layer Groups. */
229};
230
245
246/* used for most tools which change keyframes (flushed by ANIM_animdata_update) */
247#define ANIM_UPDATE_DEFAULT (ANIM_UPDATE_DEPS | ANIM_UPDATE_ORDER | ANIM_UPDATE_HANDLES)
248#define ANIM_UPDATE_DEFAULT_NOHANDLES (ANIM_UPDATE_DEFAULT & ~ANIM_UPDATE_HANDLES)
249
330
333/* -------------------------------------------------------------------- */
337/* filtering flags - under what circumstances should a channel be returned */
397
400/* -------------------------------------------------------------------- */
404/* XXX check on all of these flags again. */
405
406/* Dopesheet only */
407/* 'Scene' channels */
408#define SEL_SCEC(sce) (CHECK_TYPE_INLINE(sce, Scene *), ((sce->flag & SCE_DS_SELECTED)))
409#define EXPANDED_SCEC(sce) (CHECK_TYPE_INLINE(sce, Scene *), ((sce->flag & SCE_DS_COLLAPSED) == 0))
410/* 'Sub-Scene' channels (flags stored in Data block) */
411#define FILTER_WOR_SCED(wo) (CHECK_TYPE_INLINE(wo, World *), (wo->flag & WO_DS_EXPAND))
412#define FILTER_LS_SCED(linestyle) ((linestyle->flag & LS_DS_EXPAND))
413/* 'Object' channels */
414#define SEL_OBJC(base) (CHECK_TYPE_INLINE(base, Base *), ((base->flag & SELECT)))
415#define EXPANDED_OBJC(ob) \
416 (CHECK_TYPE_INLINE(ob, Object *), (((ob)->nlaflag & OB_ADS_COLLAPSED) == 0))
417/* 'Sub-object' channels (flags stored in Data block) */
418#define FILTER_SKE_OBJD(key) (CHECK_TYPE_INLINE(key, Key *), ((key->flag & KEY_DS_EXPAND)))
419#define FILTER_MAT_OBJD(ma) (CHECK_TYPE_INLINE(ma, Material *), ((ma->flag & MA_DS_EXPAND)))
420#define FILTER_LAM_OBJD(la) (CHECK_TYPE_INLINE(la, Light *), ((la->flag & LA_DS_EXPAND)))
421#define FILTER_CAM_OBJD(ca) (CHECK_TYPE_INLINE(ca, Camera *), ((ca->flag & CAM_DS_EXPAND)))
422#define FILTER_CACHEFILE_OBJD(cf) \
423 (CHECK_TYPE_INLINE(cf, CacheFile *), (((cf)->flag & CACHEFILE_DS_EXPAND)))
424#define FILTER_CUR_OBJD(cu) (CHECK_TYPE_INLINE(cu, Curve *), ((cu->flag & CU_DS_EXPAND)))
425#define FILTER_PART_OBJD(part) \
426 (CHECK_TYPE_INLINE(part, ParticleSettings *), (((part)->flag & PART_DS_EXPAND)))
427#define FILTER_MBALL_OBJD(mb) (CHECK_TYPE_INLINE(mb, MetaBall *), ((mb->flag2 & MB_DS_EXPAND)))
428#define FILTER_ARM_OBJD(arm) (CHECK_TYPE_INLINE(arm, bArmature *), ((arm->flag & ARM_DS_EXPAND)))
429#define FILTER_MESH_OBJD(me) (CHECK_TYPE_INLINE(me, Mesh *), ((me->flag & ME_DS_EXPAND)))
430#define FILTER_LATTICE_OBJD(lt) (CHECK_TYPE_INLINE(lt, Lattice *), ((lt->flag & LT_DS_EXPAND)))
431#define FILTER_SPK_OBJD(spk) (CHECK_TYPE_INLINE(spk, Speaker *), ((spk->flag & SPK_DS_EXPAND)))
432#define FILTER_CURVES_OBJD(ha) (CHECK_TYPE_INLINE(ha, Curves *), ((ha->flag & HA_DS_EXPAND)))
433#define FILTER_POINTS_OBJD(pt) (CHECK_TYPE_INLINE(pt, PointCloud *), ((pt->flag & PT_DS_EXPAND)))
434#define FILTER_VOLUME_OBJD(vo) (CHECK_TYPE_INLINE(vo, Volume *), ((vo->flag & VO_DS_EXPAND)))
435/* Variable use expanders */
436#define FILTER_NTREE_DATA(ntree) \
437 (CHECK_TYPE_INLINE(ntree, bNodeTree *), (((ntree)->flag & NTREE_DS_EXPAND)))
438#define FILTER_TEX_DATA(tex) (CHECK_TYPE_INLINE(tex, Tex *), ((tex->flag & TEX_DS_EXPAND)))
439
440/* 'Sub-object/Action' channels (flags stored in Action) */
441#define SEL_ACTC(actc) ((actc->flag & ACT_SELECTED))
442#define EXPANDED_ACTC(actc) ((actc->flag & ACT_COLLAPSED) == 0)
443/* 'Sub-AnimData' channels */
444#define EXPANDED_DRVD(adt) ((adt->flag & ADT_DRIVERS_COLLAPSED) == 0)
445#define EXPANDED_ADT(adt) ((adt->flag & ADT_UI_EXPANDED) != 0)
446
447/* Actions (also used for Dopesheet) */
449#define EDITABLE_AGRP(agrp) (((agrp)->flag & AGRP_PROTECTED) == 0)
450#define EXPANDED_AGRP(ac, agrp) \
451 (((!(ac) || ((ac)->spacetype != SPACE_GRAPH)) && ((agrp)->flag & AGRP_EXPANDED)) || \
452 (((ac) && ((ac)->spacetype == SPACE_GRAPH)) && ((agrp)->flag & AGRP_EXPANDED_G)))
453#define SEL_AGRP(agrp) (((agrp)->flag & AGRP_SELECTED) || ((agrp)->flag & AGRP_ACTIVE))
455#define EDITABLE_FCU(fcu) (((fcu)->flag & FCURVE_PROTECTED) == 0)
456#define SEL_FCU(fcu) ((fcu)->flag & FCURVE_SELECTED)
457
458/* ShapeKey mode only */
459#define EDITABLE_SHAPEKEY(kb) ((kb->flag & KEYBLOCK_LOCKED) == 0)
460#define SEL_SHAPEKEY(kb) (kb->flag & KEYBLOCK_SEL)
461
462/* Grease Pencil only */
464#define EXPANDED_GPD(gpd) (gpd->flag & GP_DATA_EXPAND)
466#define EDITABLE_GPL(gpl) ((gpl->flag & GP_LAYER_LOCKED) == 0)
467#define SEL_GPL(gpl) (gpl->flag & GP_LAYER_SELECT)
468
469/* Mask Only */
471#define EXPANDED_MASK(mask) (mask->flag & MASK_ANIMF_EXPAND)
473#define EDITABLE_MASK(masklay) ((masklay->flag & MASK_LAYERFLAG_LOCKED) == 0)
474#define SEL_MASKLAY(masklay) (masklay->flag & SELECT)
475
476/* NLA only */
477#define SEL_NLT(nlt) (nlt->flag & NLATRACK_SELECTED)
478#define EDITABLE_NLT(nlt) ((nlt->flag & NLATRACK_PROTECTED) == 0)
479
480/* Movie clip only */
481#define EXPANDED_MCLIP(clip) (clip->flag & MCLIP_DATA_EXPAND)
482
483/* Palette only */
484#define EXPANDED_PALETTE(palette) (palette->flag & PALETTE_DATA_EXPAND)
485
486/* AnimData - NLA mostly... */
487#define SEL_ANIMDATA(adt) (adt->flag & ADT_UI_SELECTED)
488
491/* -------------------------------------------------------------------- */
496#define NLATRACK_FIRST_TOP(ac) \
497 (UI_view2d_scale_get_y(&(ac)->region->v2d) * -UI_TIME_SCRUB_MARGIN_Y - NLATRACK_SKIP)
498#define NLATRACK_HEIGHT(snla) \
499 (((snla) && ((snla)->flag & SNLA_NOSTRIPCURVES)) ? (0.8f * U.widget_unit) : \
500 (1.2f * U.widget_unit))
501#define NLATRACK_SKIP (0.1f * U.widget_unit)
502#define NLATRACK_STEP(snla) (NLATRACK_HEIGHT(snla) + NLATRACK_SKIP)
504#define NLATRACK_TOT_HEIGHT(ac, item_amount) \
505 (-NLATRACK_FIRST_TOP(ac) + NLATRACK_STEP(((SpaceNla *)(ac)->sl)) * (item_amount + 1))
506
508#define NLATRACK_NAMEWIDTH (10 * U.widget_unit)
509
512/* -------------------------------------------------------------------- */
525 ListBase *anim_data,
526 eAnimFilter_Flags filter_mode,
527 void *data,
528 eAnimCont_Types datatype);
529
538
550
554void ANIM_animdata_update(bAnimContext *ac, ListBase *anim_data);
555
556void ANIM_animdata_freelist(ListBase *anim_data);
557
562
563/* ************************************************ */
564/* ANIMATION CHANNELS LIST */
565/* anim_channels_*.c */
566
569/* -------------------------------------------------------------------- */
578 /* ACHANNEL_ROLE_SPECIAL = 0, */ /* UNUSED */
581};
582
583/* flag-setting behavior */
596
597/* types of settings for AnimChannels */
614
617 /* -- Type data -- */
618 /* name of the channel type, for debugging */
619 const char *channel_type_name;
620 /* "level" or role in hierarchy - for finding the active channel */
622
623 /* -- Drawing -- */
625 void (*get_backdrop_color)(bAnimContext *ac, bAnimListElem *ale, float r_color[3]);
626
630 bool (*get_channel_color)(const bAnimListElem *ale, uint8_t r_color[3]);
631
633 void (*draw_backdrop)(bAnimContext *ac, bAnimListElem *ale, float yminc, float ymaxc);
638
640 void (*name)(bAnimListElem *ale, char *name);
642 bool (*name_prop)(bAnimListElem *ale, PointerRNA *r_ptr, PropertyRNA **r_prop);
645
646 /* -- Settings -- */
650 int (*setting_flag)(bAnimContext *ac, eAnimChannel_Settings setting, bool *r_neg);
656 void *(*setting_ptr)(bAnimListElem *ale, eAnimChannel_Settings setting, short *r_type);
657};
658
660/* -------------------------------------------------------------------- */
669float ANIM_UI_get_channels_total_height(View2D *v2d, int item_count);
672
675/* -------------------------------------------------------------------- */
683
687void ANIM_channel_debug_print_info(bAnimListElem *ale, short indent_level);
688
693
698 bAnimContext *ac, bAnimListElem *ale, float yminc, float ymaxc, size_t channel_index);
703 bAnimContext *ac,
704 bAnimListElem *ale,
705 uiBlock *block,
706 const rctf *rect,
707 size_t channel_index);
708
711/* -------------------------------------------------------------------- */
720 bAnimListElem *ale,
721 eAnimChannel_Settings setting);
722
727 bAnimListElem *ale,
728 eAnimChannel_Settings setting,
730
742 ListBase *anim_data,
743 bAnimListElem *ale_setting,
744 eAnimChannel_Settings setting,
746
748
753
758
763 void *data,
764 eAnimCont_Types datatype,
765 eAnimFilter_Flags filter,
766 void *channel_data,
767 eAnim_ChannelType channel_type);
768
773
779
780/* ************************************************ */
781/* DRAWING API */
782/* `anim_draw.cc` */
783
786/* -------------------------------------------------------------------- */
792/* flags for Current Frame Drawing */
795 /* DRAWCFRA_PLAIN = 0, */ /* UNUSED */
799 DRAWCFRA_WIDE = (1 << 1),
800};
801
805void ANIM_draw_cfra(const bContext *C, View2D *v2d, short flag);
806
809/* -------------------------------------------------------------------- */
818void ANIM_draw_previewrange(const bContext *C, View2D *v2d, int end_frame_width);
819
822/* -------------------------------------------------------------------- */
833void ANIM_draw_framerange(Scene *scene, View2D *v2d);
834
840 AnimData *adt, bAction *action, View2D *v2d, float ymin, float ymax);
841
842/* ************************************************* */
843/* F-MODIFIER TOOLS */
844
847/* -------------------------------------------------------------------- */
851bool ANIM_nla_context_track_ptr(const bContext *C, PointerRNA *r_ptr);
852bool ANIM_nla_context_strip_ptr(const bContext *C, PointerRNA *r_ptr);
853
857
859using PanelTypePollFn = bool (*)(const bContext *C, PanelType *pt);
861using uiListPanelIDFromDataFunc = void (*)(void *data_link, char *r_idname);
862
866void ANIM_fmodifier_panels(const bContext *C,
867 ID *owner_id,
868 ListBase *fmodifiers,
869 uiListPanelIDFromDataFunc panel_id_fn);
870
872 const char *modifier_panel_prefix,
873 PanelTypePollFn poll_function);
875 const char *modifier_panel_prefix,
876 PanelTypePollFn poll_function);
877
880/* -------------------------------------------------------------------- */
888
894bool ANIM_fmodifiers_copy_to_buf(ListBase *modifiers, bool active);
895
900bool ANIM_fmodifiers_paste_from_buf(ListBase *modifiers, bool replace, FCurve *curve);
901
902/* ************************************************* */
903/* ASSORTED TOOLS */
904
907/* -------------------------------------------------------------------- */
911/* `anim_ipo_utils.cc` */
912
926std::optional<int> getname_anim_fcurve(char *name, ID *id, FCurve *fcu);
927
933std::string getname_anim_fcurve_for_slot(Main &bmain,
934 const blender::animrig::Slot &slot,
935 FCurve &fcurve);
936
940void getcolor_fcurve_rainbow(int cur, int tot, float out[3]);
941
944/* -------------------------------------------------------------------- */
955void nla_action_get_color(AnimData *adt, bAction *act, float color[4]);
956
959/* -------------------------------------------------------------------- */
963/* `anim_draw.cc` */
964
971
977void ANIM_nla_mapping_apply_fcurve(AnimData *adt, FCurve *fcu, bool restore, bool only_keys);
978
979/* ..... */
980
986
989/* -------------------------------------------------------------------- */
993/* `anim_draw.cc` */
994
1006 /* ANIM_UNITCONV_SKIPKNOTS = (1 << 4), */ /* UNUSED */
1014};
1015
1019short ANIM_get_normalization_flags(SpaceLink *space_link);
1023float ANIM_unit_mapping_get_factor(Scene *scene, ID *id, FCurve *fcu, short flag, float *r_offset);
1024
1027/* -------------------------------------------------------------------- */
1037#define ACHANNEL_SET_FLAG(channel, smode, sflag) \
1038 { \
1039 if (smode == ACHANNEL_SETFLAG_INVERT) { \
1040 (channel)->flag ^= (sflag); \
1041 } \
1042 else if (smode == ACHANNEL_SETFLAG_ADD) { \
1043 (channel)->flag |= (sflag); \
1044 } \
1045 else { \
1046 (channel)->flag &= ~(sflag); \
1047 } \
1048 } \
1049 ((void)0)
1050
1057#define ACHANNEL_SET_FLAG_NEG(channel, smode, sflag) \
1058 { \
1059 if (smode == ACHANNEL_SETFLAG_INVERT) { \
1060 (channel)->flag ^= (sflag); \
1061 } \
1062 else if (smode == ACHANNEL_SETFLAG_ADD) { \
1063 (channel)->flag &= ~(sflag); \
1064 } \
1065 else { \
1066 (channel)->flag |= (sflag); \
1067 } \
1068 } \
1069 ((void)0)
1070
1073/* `anim_deps.cc` */
1074
1075/* -------------------------------------------------------------------- */
1082void ANIM_id_update(Main *bmain, ID *id);
1086void ANIM_list_elem_update(Main *bmain, Scene *scene, bAnimListElem *ale);
1087
1088/* data -> channels syncing */
1089
1094
1095void ANIM_center_frame(bContext *C, int smooth_viewtx);
1096
1104rctf ANIM_frame_range_view2d_add_xmargin(const View2D &view_2d, rctf view_rect);
1105
1108/* -------------------------------------------------------------------- */
1112/* generic animation channels */
1114void ED_keymap_animchannels(wmKeyConfig *keyconf);
1115
1116/* generic time editing */
1118void ED_keymap_anim(wmKeyConfig *keyconf);
1119
1120/* space_graph */
1122/* space_action */
1124/* space_nla */
1126
1129/* -------------------------------------------------------------------- */
1133/* XXX: Should we be doing these here, or at all? */
1134
1139AnimData *ED_actedit_animdata_from_context(const bContext *C, ID **r_adt_id_owner);
1141 bContext *C, ID *id, AnimData *adt, bAction *act, ReportList *reports, bool force_delete);
1142
1149
1150/* ************************************************ */
1151
1162
1163Depsgraph *animviz_depsgraph_build(Main *bmain,
1164 Scene *scene,
1165 ViewLayer *view_layer,
1166 ListBase *targets);
1167
1168void animviz_calc_motionpaths(Depsgraph *depsgraph,
1169 Main *bmain,
1170 Scene *scene,
1171 ListBase *targets,
1172 eAnimvizCalcRange range,
1173 bool restore);
1174
1183
1189
#define ENUM_OPERATORS(_type, _max)
eAnimEdit_Context
eRegion_Type
eSpace_Type
eGraphEdit_Mode
eAnimChannels_SetFlag
@ ACHANNEL_SETFLAG_TOGGLE
@ ACHANNEL_SETFLAG_EXTEND_RANGE
@ ACHANNEL_SETFLAG_ADD
@ ACHANNEL_SETFLAG_INVERT
@ ACHANNEL_SETFLAG_CLEAR
std::string getname_anim_fcurve_for_slot(Main &bmain, const blender::animrig::Slot &slot, FCurve &fcurve)
NlaTrack * ANIM_nla_context_track(const bContext *C)
bool ANIM_fmodifiers_paste_from_buf(ListBase *modifiers, bool replace, FCurve *curve)
bool ANIM_animdata_can_have_greasepencil(const eAnimCont_Types type)
void ANIM_flush_setting_anim_channels(bAnimContext *ac, ListBase *anim_data, bAnimListElem *ale_setting, eAnimChannel_Settings setting, eAnimChannels_SetFlag mode)
void ANIM_anim_channels_select_set(bAnimContext *ac, eAnimChannels_SetFlag sel)
void ED_operatortypes_anim()
Definition anim_ops.cc:937
short ANIM_get_normalization_flags(SpaceLink *space_link)
Definition anim_draw.cc:320
AnimData * ANIM_nla_mapping_get(bAnimContext *ac, bAnimListElem *ale)
Definition anim_draw.cc:210
void ED_keymap_animchannels(wmKeyConfig *keyconf)
eAnim_ChannelType
@ ANIMTYPE_DSSPK
@ ANIMTYPE_DSTEX
@ ANIMTYPE_SUMMARY
@ ANIMTYPE_DSNTREE
@ ANIMTYPE_NLACURVE
@ ANIMTYPE_SHAPEKEY
@ ANIMTYPE_DSMBALL
@ ANIMTYPE_DSCAM
@ ANIMTYPE_DSPOINTCLOUD
@ ANIMTYPE_FILLDRIVERS
@ ANIMTYPE_NONE
@ ANIMTYPE_DSPART
@ ANIMTYPE_DSLINESTYLE
@ ANIMTYPE_GROUP
@ ANIMTYPE_ACTION_SLOT
@ ANIMTYPE_SPECIALDATA__UNUSED
@ ANIMTYPE_GREASE_PENCIL_DATABLOCK
@ ANIMTYPE_DSCUR
@ ANIMTYPE_SCENE
@ ANIMTYPE_DSARM
@ ANIMTYPE_NLACONTROLS
@ ANIMTYPE_GPLAYER
@ ANIMTYPE_MASKDATABLOCK
@ ANIMTYPE_ANIMDATA
@ ANIMTYPE_MASKLAYER
@ ANIMTYPE_DSGPENCIL
@ ANIMTYPE_DSLAT
@ ANIMTYPE_NLAACTION
@ ANIMTYPE_DSMCLIP
@ ANIMTYPE_DSMAT
@ ANIMTYPE_NUM_TYPES
@ ANIMTYPE_DSCACHEFILE
@ ANIMTYPE_DSVOLUME
@ ANIMTYPE_FCURVE
@ ANIMTYPE_DSLAM
@ ANIMTYPE_PALETTE
@ ANIMTYPE_GPDATABLOCK
@ ANIMTYPE_GREASE_PENCIL_LAYER
@ ANIMTYPE_FILLACT_LAYERED
@ ANIMTYPE_FILLACTD
@ ANIMTYPE_OBJECT
@ ANIMTYPE_DSMESH
@ ANIMTYPE_GREASE_PENCIL_LAYER_GROUP
@ ANIMTYPE_NLATRACK
@ ANIMTYPE_DSWOR
@ ANIMTYPE_DSSKEY
@ ANIMTYPE_DSHAIR
AnimData * ED_actedit_animdata_from_context(const bContext *C, ID **r_adt_id_owner)
void ANIM_channel_setting_set(bAnimContext *ac, bAnimListElem *ale, eAnimChannel_Settings setting, eAnimChannels_SetFlag mode)
float ANIM_UI_get_channel_skip()
void animviz_calc_motionpaths(Depsgraph *depsgraph, Main *bmain, Scene *scene, ListBase *targets, eAnimvizCalcRange range, bool restore)
void ANIM_channel_draw_widgets(const bContext *C, bAnimContext *ac, bAnimListElem *ale, uiBlock *block, const rctf *rect, size_t channel_index)
float ANIM_UI_get_keyframe_scale_factor()
void ED_operatormacros_graph()
Definition graph_ops.cc:503
float ANIM_UI_get_channel_name_width()
void ED_nla_postop_refresh(bAnimContext *ac)
Definition nla_edit.cc:59
void ANIM_animdata_freelist(ListBase *anim_data)
Definition anim_deps.cc:457
void animviz_get_object_motionpaths(Object *ob, ListBase *targets)
void ANIM_channel_draw(bAnimContext *ac, bAnimListElem *ale, float yminc, float ymaxc, size_t channel_index)
void ANIM_draw_action_framerange(AnimData *adt, bAction *action, View2D *v2d, float ymin, float ymax)
Definition anim_draw.cc:143
void ANIM_frame_channel_y_extents(bContext *C, bAnimContext *ac)
rctf ANIM_frame_range_view2d_add_xmargin(const View2D &view_2d, rctf view_rect)
Definition anim_draw.cc:706
void ED_operatormacros_action()
Definition action_ops.cc:76
const bAnimChannelType * ANIM_channel_get_typeinfo(bAnimListElem *ale)
eAnimChannel_Role
@ ACHANNEL_ROLE_CHANNEL
@ ACHANNEL_ROLE_EXPANDER
bool ANIM_animdata_get_context(const bContext *C, bAnimContext *ac)
float ANIM_UI_get_channel_step()
void(*)(void *data_link, char *r_idname) uiListPanelIDFromDataFunc
bool ANIM_is_active_channel(bAnimListElem *ale)
float ANIM_UI_get_channels_total_height(View2D *v2d, int item_count)
eAnim_KeyType
@ ALE_GREASE_PENCIL_GROUP
@ ALE_SCE
@ ALE_GREASE_PENCIL_CEL
@ ALE_GREASE_PENCIL_DATA
@ ALE_NONE
@ ALE_GPFRAME
@ ALE_FCURVE
@ ALE_NLASTRIP
@ ALE_ALL
@ ALE_ACT
@ ALE_ACTION_LAYERED
@ ALE_OB
@ ALE_GROUP
@ ALE_ACTION_SLOT
@ ALE_MASKLAY
void animviz_motionpath_compute_range(Object *ob, Scene *scene)
std::optional< int > getname_anim_fcurve(char *name, ID *id, FCurve *fcu)
float ANIM_UI_get_first_channel_top(View2D *v2d)
eAnim_Update_Flags
@ ANIM_UPDATE_DEPS
@ ANIM_UPDATE_HANDLES
@ ANIM_UPDATE_ORDER
eAnimCont_Types
@ ANIMCONT_DRIVERS
@ ANIMCONT_FCURVES
@ ANIMCONT_NLA
@ ANIMCONT_MASK
@ ANIMCONT_SHAPEKEY
@ ANIMCONT_TIMELINE
@ ANIMCONT_DOPESHEET
@ ANIMCONT_ACTION
@ ANIMCONT_NONE
@ ANIMCONT_GPENCIL
@ ANIMCONT_CHANNEL
void ANIM_draw_cfra(const bContext *C, View2D *v2d, short flag)
Definition anim_draw.cc:45
void ED_animedit_unlink_action(bContext *C, ID *id, AnimData *adt, bAction *act, ReportList *reports, bool force_delete)
void ANIM_set_active_channel(bAnimContext *ac, void *data, eAnimCont_Types datatype, eAnimFilter_Flags filter, void *channel_data, eAnim_ChannelType channel_type)
void ANIM_channel_debug_print_info(bAnimListElem *ale, short indent_level)
bool ANIM_animdata_context_getdata(bAnimContext *ac)
void ANIM_deselect_keys_in_animation_editors(bContext *C)
Definition anim_deps.cc:472
void ANIM_modifier_panels_register_graph_only(ARegionType *region_type, const char *modifier_panel_prefix, PanelTypePollFn poll_function)
float ANIM_UI_get_channel_height()
void getcolor_fcurve_rainbow(int cur, int tot, float out[3])
void ANIM_center_frame(bContext *C, int smooth_viewtx)
Definition anim_draw.cc:663
void ANIM_nla_mapping_apply_fcurve(AnimData *adt, FCurve *fcu, bool restore, bool only_keys)
Definition anim_draw.cc:290
NlaStrip * ANIM_nla_context_strip(const bContext *C)
void ANIM_modifier_panels_register_graph_and_NLA(ARegionType *region_type, const char *modifier_panel_prefix, PanelTypePollFn poll_function)
void ANIM_sync_animchannels_to_data(const bContext *C)
Definition anim_deps.cc:255
FCurve * ANIM_graph_context_fcurve(const bContext *C)
eAnimChannel_Settings
@ ACHANNEL_SETTING_ALWAYS_VISIBLE
@ ACHANNEL_SETTING_PINNED
@ ACHANNEL_SETTING_MUTE
@ ACHANNEL_SETTING_PROTECT
@ ACHANNEL_SETTING_VISIBLE
@ ACHANNEL_SETTING_EXPAND
@ ACHANNEL_SETTING_SOLO
@ ACHANNEL_SETTING_MOD_OFF
@ ACHANNEL_SETTING_SELECT
bAction * ANIM_channel_action_get(const bAnimListElem *ale)
void ANIM_id_update(Main *bmain, ID *id)
Definition anim_deps.cc:102
void nla_action_get_color(AnimData *adt, bAction *act, float color[4])
Definition nla_draw.cc:54
size_t ANIM_animdata_filter(bAnimContext *ac, ListBase *anim_data, eAnimFilter_Flags filter_mode, void *data, eAnimCont_Types datatype)
void ANIM_draw_previewrange(const bContext *C, View2D *v2d, int end_frame_width)
Definition anim_draw.cc:73
void ANIM_anim_channels_select_toggle(bAnimContext *ac)
short ANIM_channel_setting_get(bAnimContext *ac, bAnimListElem *ale, eAnimChannel_Settings setting)
void ANIM_fmodifiers_copybuf_free()
bool(*)(const bContext *C, PanelType *pt) PanelTypePollFn
void ED_keymap_anim(wmKeyConfig *keyconf)
Definition anim_ops.cc:983
void ANIM_list_elem_update(Main *bmain, Scene *scene, bAnimListElem *ale)
Definition anim_deps.cc:51
eAnimEditDraw_CurrentFrame
@ DRAWCFRA_WIDE
@ DRAWCFRA_UNIT_SECONDS
float ANIM_UI_get_channel_button_width()
eAnimvizCalcRange
@ ANIMVIZ_CALC_RANGE_FULL
@ ANIMVIZ_CALC_RANGE_CURRENT_FRAME
@ ANIMVIZ_CALC_RANGE_CHANGED
float ANIM_unit_mapping_get_factor(Scene *scene, ID *id, FCurve *fcu, short flag, float *r_offset)
Definition anim_draw.cc:529
bool ANIM_nla_context_strip_ptr(const bContext *C, PointerRNA *r_ptr)
void ED_operatortypes_animchannels()
bool ANIM_nla_context_track_ptr(const bContext *C, PointerRNA *r_ptr)
Depsgraph * animviz_depsgraph_build(Main *bmain, Scene *scene, ViewLayer *view_layer, ListBase *targets)
bool ANIM_fmodifiers_copy_to_buf(ListBase *modifiers, bool active)
eAnimFilter_Flags
@ ANIMFILTER_TMP_PEEK
@ ANIMFILTER_ACTIVE
@ ANIMFILTER_UNSEL
@ ANIMFILTER_FOREDIT
@ ANIMFILTER_ANIMDATA
@ ANIMFILTER_DATA_VISIBLE
@ ANIMFILTER_CURVE_VISIBLE
@ ANIMFILTER_SELEDIT
@ ANIMFILTER_LIST_VISIBLE
@ ANIMFILTER_LIST_CHANNELS
@ ANIMFILTER_NODUPLIS
@ ANIMFILTER_TMP_IGNORE_ONLYSEL
@ ANIMFILTER_FCURVESONLY
@ ANIMFILTER_SEL
@ ANIMFILTER_ACTGROUPED
void ANIM_fmodifier_panels(const bContext *C, ID *owner_id, ListBase *fmodifiers, uiListPanelIDFromDataFunc panel_id_fn)
void ED_operatormacros_nla()
Definition nla_ops.cc:143
void ED_drivers_editor_init(bContext *C, ScrArea *area)
void ANIM_animdata_update(bAnimContext *ac, ListBase *anim_data)
Definition anim_deps.cc:350
eAnimUnitConv_Flags
@ ANIM_UNITCONV_NORMALIZE
@ ANIM_UNITCONV_ONLYSEL
@ ANIM_UNITCONV_ONLYKEYS
@ ANIM_UNITCONV_SELVERTS
@ ANIM_UNITCONV_NONE
@ ANIM_UNITCONV_NORMALIZE_FREEZE
@ ANIM_UNITCONV_RESTORE
void ANIM_draw_framerange(Scene *scene, View2D *v2d)
Definition anim_draw.cc:107
#define C
Definition RandGen.cpp:29
const Depsgraph * depsgraph
draw_view push_constant(Type::INT, "radiance_src") .push_constant(Type capture_info_buf storage_buf(1, Qualifier::READ, "ObjectBounds", "bounds_buf[]") .push_constant(Type draw_view int
signed int int32_t
Definition stdint.h:77
unsigned char uint8_t
Definition stdint.h:78
Definition DNA_ID.h:413
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)
eAnimChannel_Role channel_role
bool(* get_channel_color)(const bAnimListElem *ale, uint8_t r_color[3])
int(* icon)(bAnimListElem *ale)
eAnimEdit_Context dopesheet_mode
eGraphEdit_Mode grapheditor_mode
SpaceLink * sl
ListBase * markers
eAnimCont_Types datatype
bDopeSheet * ads
ReportList * reports
eSpace_Type spacetype
ViewLayer * view_layer
ARegion * region
Depsgraph * depsgraph
Object * obact
eRegion_Type regiontype
ScrArea * area
int32_t slot_handle
AnimData * adt
bAnimListElem * next
eAnim_ChannelType type
eAnim_Update_Flags update
eAnim_KeyType datatype
bAnimListElem * prev
uint8_t flag
Definition wm_window.cc:138