Blender V4.5
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
8
9#pragma once
10
11#include "BKE_nla.hh"
12
13#include "BLI_sys_types.h"
14#include "BLI_utildefines.h"
15
16#include "DNA_screen_types.h"
17#include "DNA_space_types.h"
18
19#include <optional>
20
21struct AnimData;
22struct Depsgraph;
23struct ID;
24struct ListBase;
25
26struct ARegion;
27struct ARegionType;
28struct FModifier;
29struct Main;
30struct NlaStrip;
31struct NlaTrack;
32struct PanelType;
33struct ReportList;
34struct ScrArea;
35struct SpaceLink;
36struct View2D;
37struct ViewLayer;
38struct rctf;
39struct bContext;
40struct wmKeyConfig;
41
42struct Object;
43struct Scene;
44
45struct bDopeSheet;
46
47struct FCurve;
48struct FModifier;
49struct bAction;
50
51struct uiBlock;
52
53struct PointerRNA;
54struct PropertyRNA;
55
56struct MPathTarget;
57
58namespace blender::animrig {
59class Action;
60class Slot;
61} // namespace blender::animrig
62
63/* ************************************************ */
64/* ANIMATION CHANNEL FILTERING */
65/* `anim_filter.cc` */
66
67/* -------------------------------------------------------------------- */
70
96
142
144
145/* -------------------------------------------------------------------- */
148
218
221 ALE_NONE = 0, /* no keyframe data */
222 ALE_FCURVE, /* F-Curve */
223 ALE_GPFRAME, /* Grease Pencil Frames (Legacy) */
224 ALE_MASKLAY, /* Mask */
225 ALE_NLASTRIP, /* NLA Strips */
226
227 ALE_ALL, /* All channels summary */
228 ALE_SCE, /* Scene summary */
229 ALE_OB, /* Object summary */
230 ALE_ACT, /* Action summary (legacy). */
231 ALE_GROUP, /* Action Group summary (legacy). */
232 ALE_ACTION_LAYERED, /* Action summary (layered). */
233 ALE_ACTION_SLOT, /* Action slot summary. */
234
235 ALE_GREASE_PENCIL_CEL, /* Grease Pencil Cels. */
236 ALE_GREASE_PENCIL_DATA, /* Grease Pencil Cels summary. */
237 ALE_GREASE_PENCIL_GROUP, /* Grease Pencil Layer Groups. */
238};
239
254
255/* used for most tools which change keyframes (flushed by ANIM_animdata_update) */
256#define ANIM_UPDATE_DEFAULT (ANIM_UPDATE_DEPS | ANIM_UPDATE_ORDER | ANIM_UPDATE_HANDLES)
257#define ANIM_UPDATE_DEFAULT_NOHANDLES (ANIM_UPDATE_DEFAULT & ~ANIM_UPDATE_HANDLES)
258
339
341
342/* -------------------------------------------------------------------- */
345
346/* filtering flags - under what circumstances should a channel be returned */
406
408
409/* -------------------------------------------------------------------- */
412
413/* XXX check on all of these flags again. */
414
415/* Dope-sheet only. */
416/* 'Scene' channels */
417#define SEL_SCEC(sce) (CHECK_TYPE_INLINE(sce, Scene *), ((sce->flag & SCE_DS_SELECTED)))
418#define EXPANDED_SCEC(sce) (CHECK_TYPE_INLINE(sce, Scene *), ((sce->flag & SCE_DS_COLLAPSED) == 0))
419/* 'Sub-Scene' channels (flags stored in Data block) */
420#define FILTER_WOR_SCED(wo) (CHECK_TYPE_INLINE(wo, World *), (wo->flag & WO_DS_EXPAND))
421#define FILTER_LS_SCED(linestyle) ((linestyle->flag & LS_DS_EXPAND))
422/* 'Object' channels */
423#define SEL_OBJC(base) (CHECK_TYPE_INLINE(base, Base *), ((base->flag & SELECT)))
424#define EXPANDED_OBJC(ob) \
425 (CHECK_TYPE_INLINE(ob, Object *), (((ob)->nlaflag & OB_ADS_COLLAPSED) == 0))
426/* 'Sub-object' channels (flags stored in Data block) */
427#define FILTER_SKE_OBJD(key) (CHECK_TYPE_INLINE(key, Key *), ((key->flag & KEY_DS_EXPAND)))
428#define FILTER_MAT_OBJD(ma) (CHECK_TYPE_INLINE(ma, Material *), ((ma->flag & MA_DS_EXPAND)))
429#define FILTER_LAM_OBJD(la) (CHECK_TYPE_INLINE(la, Light *), ((la->flag & LA_DS_EXPAND)))
430#define FILTER_CAM_OBJD(ca) (CHECK_TYPE_INLINE(ca, Camera *), ((ca->flag & CAM_DS_EXPAND)))
431#define FILTER_CACHEFILE_OBJD(cf) \
432 (CHECK_TYPE_INLINE(cf, CacheFile *), (((cf)->flag & CACHEFILE_DS_EXPAND)))
433#define FILTER_CUR_OBJD(cu) (CHECK_TYPE_INLINE(cu, Curve *), ((cu->flag & CU_DS_EXPAND)))
434#define FILTER_PART_OBJD(part) \
435 (CHECK_TYPE_INLINE(part, ParticleSettings *), (((part)->flag & PART_DS_EXPAND)))
436#define FILTER_MBALL_OBJD(mb) (CHECK_TYPE_INLINE(mb, MetaBall *), ((mb->flag2 & MB_DS_EXPAND)))
437#define FILTER_ARM_OBJD(arm) (CHECK_TYPE_INLINE(arm, bArmature *), ((arm->flag & ARM_DS_EXPAND)))
438#define FILTER_MESH_OBJD(me) (CHECK_TYPE_INLINE(me, Mesh *), ((me->flag & ME_DS_EXPAND)))
439#define FILTER_LATTICE_OBJD(lt) (CHECK_TYPE_INLINE(lt, Lattice *), ((lt->flag & LT_DS_EXPAND)))
440#define FILTER_SPK_OBJD(spk) (CHECK_TYPE_INLINE(spk, Speaker *), ((spk->flag & SPK_DS_EXPAND)))
441#define FILTER_CURVES_OBJD(ha) (CHECK_TYPE_INLINE(ha, Curves *), ((ha->flag & HA_DS_EXPAND)))
442#define FILTER_POINTS_OBJD(pt) (CHECK_TYPE_INLINE(pt, PointCloud *), ((pt->flag & PT_DS_EXPAND)))
443#define FILTER_VOLUME_OBJD(vo) (CHECK_TYPE_INLINE(vo, Volume *), ((vo->flag & VO_DS_EXPAND)))
444#define FILTER_LIGHTPROBE_OBJD(probe) \
445 (CHECK_TYPE_INLINE(probe, LightProbe *), ((probe->flag & LIGHTPROBE_DS_EXPAND)))
446/* Variable use expanders */
447#define FILTER_NTREE_DATA(ntree) \
448 (CHECK_TYPE_INLINE(ntree, bNodeTree *), (((ntree)->flag & NTREE_DS_EXPAND)))
449#define FILTER_TEX_DATA(tex) (CHECK_TYPE_INLINE(tex, Tex *), ((tex->flag & TEX_DS_EXPAND)))
450
451/* 'Sub-object/Action' channels (flags stored in Action) */
452#define SEL_ACTC(actc) ((actc->flag & ACT_SELECTED))
453#define EXPANDED_ACTC(actc) ((actc->flag & ACT_COLLAPSED) == 0)
454/* 'Sub-AnimData' channels */
455#define EXPANDED_DRVD(adt) ((adt->flag & ADT_DRIVERS_COLLAPSED) == 0)
456#define EXPANDED_ADT(adt) ((adt->flag & ADT_UI_EXPANDED) != 0)
457
458/* Actions (also used for Dope-sheet). */
460#define EDITABLE_AGRP(agrp) (((agrp)->flag & AGRP_PROTECTED) == 0)
461#define EXPANDED_AGRP(ac, agrp) \
462 (((!(ac) || ((ac)->spacetype != SPACE_GRAPH)) && ((agrp)->flag & AGRP_EXPANDED)) || \
463 (((ac) && ((ac)->spacetype == SPACE_GRAPH)) && ((agrp)->flag & AGRP_EXPANDED_G)))
464#define SEL_AGRP(agrp) (((agrp)->flag & AGRP_SELECTED) || ((agrp)->flag & AGRP_ACTIVE))
466#define EDITABLE_FCU(fcu) (((fcu)->flag & FCURVE_PROTECTED) == 0)
467#define SEL_FCU(fcu) ((fcu)->flag & FCURVE_SELECTED)
468
469/* ShapeKey mode only */
470#define EDITABLE_SHAPEKEY(kb) ((kb->flag & KEYBLOCK_LOCKED) == 0)
471#define SEL_SHAPEKEY(kb) (kb->flag & KEYBLOCK_SEL)
472
473/* Grease Pencil only */
475#define EXPANDED_GPD(gpd) (gpd->flag & GP_DATA_EXPAND)
477#define EDITABLE_GPL(gpl) ((gpl->flag & GP_LAYER_LOCKED) == 0)
478#define SEL_GPL(gpl) (gpl->flag & GP_LAYER_SELECT)
479
480/* Mask Only */
482#define EXPANDED_MASK(mask) (mask->flag & MASK_ANIMF_EXPAND)
484#define EDITABLE_MASK(masklay) ((masklay->flag & MASK_LAYERFLAG_LOCKED) == 0)
485#define SEL_MASKLAY(masklay) (masklay->flag & SELECT)
486
487/* NLA only */
488#define SEL_NLT(nlt) (nlt->flag & NLATRACK_SELECTED)
489#define EDITABLE_NLT(nlt) ((nlt->flag & NLATRACK_PROTECTED) == 0)
490
491/* Movie clip only */
492#define EXPANDED_MCLIP(clip) (clip->flag & MCLIP_DATA_EXPAND)
493
494/* Palette only */
495#define EXPANDED_PALETTE(palette) (palette->flag & PALETTE_DATA_EXPAND)
496
497/* AnimData - NLA mostly... */
498#define SEL_ANIMDATA(adt) (adt->flag & ADT_UI_SELECTED)
499
501
502/* -------------------------------------------------------------------- */
505
507#define NLATRACK_FIRST_TOP(ac) \
508 (UI_view2d_scale_get_y(&(ac)->region->v2d) * -UI_TIME_SCRUB_MARGIN_Y - NLATRACK_SKIP)
509#define NLATRACK_HEIGHT(snla) \
510 (((snla) && ((snla)->flag & SNLA_NOSTRIPCURVES)) ? (0.8f * U.widget_unit) : \
511 (1.2f * U.widget_unit))
512#define NLATRACK_SKIP (0.1f * U.widget_unit)
513#define NLATRACK_STEP(snla) (NLATRACK_HEIGHT(snla) + NLATRACK_SKIP)
515#define NLATRACK_TOT_HEIGHT(ac, item_amount) \
516 (-NLATRACK_FIRST_TOP(ac) + NLATRACK_STEP(((SpaceNla *)(ac)->sl)) * (item_amount + 1))
517
519#define NLATRACK_NAMEWIDTH (10 * U.widget_unit)
520
522
523/* -------------------------------------------------------------------- */
526
548 ListBase * /* bAnimListElem */ anim_data,
551 eAnimFilter_Flags filter_mode,
552 ID *animated_id);
553
563 ListBase *anim_data,
564 eAnimFilter_Flags filter_mode,
565 void *data,
566 eAnimCont_Types datatype);
567
576
588
592void ANIM_animdata_update(bAnimContext *ac, ListBase *anim_data);
593
594void ANIM_animdata_freelist(ListBase *anim_data);
595
600
601/* ************************************************ */
602/* ANIMATION CHANNELS LIST */
603/* anim_channels_*.c */
604
606
607/* -------------------------------------------------------------------- */
610
616 /* ACHANNEL_ROLE_SPECIAL = 0, */ /* UNUSED */
619};
620
621/* flag-setting behavior */
634
635/* types of settings for AnimChannels */
652
655 /* -- Type data -- */
656 /* name of the channel type, for debugging */
657 const char *channel_type_name;
658 /* "level" or role in hierarchy - for finding the active channel */
660
661 /* -- Drawing -- */
663 void (*get_backdrop_color)(bAnimContext *ac, bAnimListElem *ale, float r_color[3]);
664
668 bool (*get_channel_color)(const bAnimListElem *ale, uint8_t r_color[3]);
669
671 void (*draw_backdrop)(bAnimContext *ac, bAnimListElem *ale, float yminc, float ymaxc);
676
678 void (*name)(bAnimListElem *ale, char *name);
680 bool (*name_prop)(bAnimListElem *ale, PointerRNA *r_ptr, PropertyRNA **r_prop);
682 int (*icon)(bAnimListElem *ale);
683
684 /* -- Settings -- */
688 int (*setting_flag)(bAnimContext *ac, eAnimChannel_Settings setting, bool *r_neg);
694 void *(*setting_ptr)(bAnimListElem *ale, eAnimChannel_Settings setting, short *r_type);
695
704 void (*setting_post_update)(Main &bmain,
705 const bAnimListElem &ale,
706 eAnimChannel_Settings setting);
707};
708
710/* -------------------------------------------------------------------- */
713
719float ANIM_UI_get_channels_total_height(View2D *v2d, int item_count);
722
724
725/* -------------------------------------------------------------------- */
728
733
737void ANIM_channel_debug_print_info(bAnimContext &ac, bAnimListElem *ale, short indent_level);
738
743
748 bAnimContext *ac, bAnimListElem *ale, float yminc, float ymaxc, size_t channel_index);
753 bAnimContext *ac,
754 bAnimListElem *ale,
755 uiBlock *block,
756 const rctf *rect,
757 size_t channel_index);
758
760
761/* -------------------------------------------------------------------- */
764
770 bAnimListElem *ale,
771 eAnimChannel_Settings setting);
772
777 bAnimListElem *ale,
778 eAnimChannel_Settings setting,
780
792 ListBase *anim_data,
793 bAnimListElem *ale_setting,
794 eAnimChannel_Settings setting,
796
798
803
808
813 void *data,
814 eAnimCont_Types datatype,
816 void *channel_data,
817 eAnim_ChannelType channel_type);
818
823
829
830/* ************************************************ */
831/* DRAWING API */
832/* `anim_draw.cc` */
833
835
836/* -------------------------------------------------------------------- */
841
842/* flags for Current Frame Drawing */
845 /* DRAWCFRA_PLAIN = 0, */ /* UNUSED */
849 DRAWCFRA_WIDE = (1 << 1),
850};
851
855void ANIM_draw_cfra(const bContext *C, View2D *v2d, short flag);
856
858
859/* -------------------------------------------------------------------- */
864
868void ANIM_draw_previewrange(const Scene *scene, View2D *v2d, int end_frame_width);
869
871
872/* -------------------------------------------------------------------- */
877
881void ANIM_draw_framerange(Scene *scene, View2D *v2d);
882
888 AnimData *adt, bAction *action, View2D *v2d, float ymin, float ymax);
889
890/* ************************************************* */
891/* F-MODIFIER TOOLS */
892
894
895/* -------------------------------------------------------------------- */
898
901
905
907using PanelTypePollFn = bool (*)(const bContext *C, PanelType *pt);
909using uiListPanelIDFromDataFunc = void (*)(void *data_link, char *r_idname);
910
915 ID *owner_id,
916 ListBase *fmodifiers,
917 uiListPanelIDFromDataFunc panel_id_fn);
918
920 const char *modifier_panel_prefix,
921 PanelTypePollFn poll_function);
923 const char *modifier_panel_prefix,
924 PanelTypePollFn poll_function);
925
927
928/* -------------------------------------------------------------------- */
931
936
942bool ANIM_fmodifiers_copy_to_buf(ListBase *modifiers, bool active);
943
948bool ANIM_fmodifiers_paste_from_buf(ListBase *modifiers, bool replace, FCurve *curve);
949
950/* ************************************************* */
951/* ASSORTED TOOLS */
952
954
955/* -------------------------------------------------------------------- */
958
959/* `anim_ipo_utils.cc` */
960
974std::optional<int> getname_anim_fcurve(char *name, ID *id, FCurve *fcu);
975
981std::string getname_anim_fcurve_for_slot(Main &bmain,
982 const blender::animrig::Slot &slot,
983 FCurve &fcurve);
984
988void getcolor_fcurve_rainbow(int cur, int tot, float out[3]);
989
991
992/* -------------------------------------------------------------------- */
998
1003void nla_action_get_color(AnimData *adt, bAction *act, float color[4]);
1004
1006
1007/* -------------------------------------------------------------------- */
1010
1011/* `anim_draw.cc` */
1012
1020
1027float ANIM_nla_tweakedit_remap(bAnimListElem *ale, float cframe, eNlaTime_ConvertModes mode);
1028
1039void ANIM_nla_mapping_apply_fcurve(AnimData *adt, FCurve *fcu, bool restore, bool only_keys);
1040
1045 FCurve *fcu,
1046 bool restore,
1047 bool only_keys);
1048
1049/* ..... */
1050
1056
1058
1059/* -------------------------------------------------------------------- */
1062
1063/* `anim_draw.cc` */
1064
1076 /* ANIM_UNITCONV_SKIPKNOTS = (1 << 4), */ /* UNUSED */
1084};
1085
1089short ANIM_get_normalization_flags(SpaceLink *space_link);
1093float ANIM_unit_mapping_get_factor(Scene *scene, ID *id, FCurve *fcu, short flag, float *r_offset);
1094
1096
1097/* -------------------------------------------------------------------- */
1100
1107#define ACHANNEL_SET_FLAG(channel, smode, sflag) \
1108 { \
1109 if (smode == ACHANNEL_SETFLAG_INVERT) { \
1110 (channel)->flag ^= (sflag); \
1111 } \
1112 else if (smode == ACHANNEL_SETFLAG_ADD) { \
1113 (channel)->flag |= (sflag); \
1114 } \
1115 else { \
1116 (channel)->flag &= ~(sflag); \
1117 } \
1118 } \
1119 ((void)0)
1120
1127#define ACHANNEL_SET_FLAG_NEG(channel, smode, sflag) \
1128 { \
1129 if (smode == ACHANNEL_SETFLAG_INVERT) { \
1130 (channel)->flag ^= (sflag); \
1131 } \
1132 else if (smode == ACHANNEL_SETFLAG_ADD) { \
1133 (channel)->flag &= ~(sflag); \
1134 } \
1135 else { \
1136 (channel)->flag |= (sflag); \
1137 } \
1138 } \
1139 ((void)0)
1140
1142
1143/* `anim_deps.cc` */
1144
1145/* -------------------------------------------------------------------- */
1148
1152void ANIM_id_update(Main *bmain, ID *id);
1156void ANIM_list_elem_update(Main *bmain, Scene *scene, bAnimListElem *ale);
1157
1158/* data -> channels syncing */
1159
1164
1165void ANIM_center_frame(bContext *C, int smooth_viewtx);
1166
1174rctf ANIM_frame_range_view2d_add_xmargin(const View2D &view_2d, rctf view_rect);
1175
1177
1178/* -------------------------------------------------------------------- */
1181
1182/* generic animation channels */
1184void ED_keymap_animchannels(wmKeyConfig *keyconf);
1185
1186/* generic time editing */
1188void ED_keymap_anim(wmKeyConfig *keyconf);
1189
1190/* space_graph */
1192/* space_action */
1194/* space_nla */
1196
1198
1199/* -------------------------------------------------------------------- */
1202
1203/* XXX: Should we be doing these here, or at all? */
1204
1209AnimData *ED_actedit_animdata_from_context(const bContext *C, ID **r_adt_id_owner);
1211 bContext *C, ID *id, AnimData *adt, bAction *act, ReportList *reports, bool force_delete);
1212
1219
1220/* ************************************************ */
1221
1232
1233Depsgraph *animviz_depsgraph_build(Main *bmain,
1234 Scene *scene,
1235 ViewLayer *view_layer,
1237
1238void animviz_calc_motionpaths(Depsgraph *depsgraph,
1239 Main *bmain,
1240 Scene *scene,
1242 eAnimvizCalcRange range,
1243 bool restore);
1244
1253
1260
1266
eNlaTime_ConvertModes
Definition BKE_nla.hh:535
#define ENUM_OPERATORS(_type, _max)
eAnimEdit_Context
eRegion_Type
eSpace_Type
eGraphEdit_Mode
Depsgraph * animviz_depsgraph_build(Main *bmain, Scene *scene, ViewLayer *view_layer, blender::Span< MPathTarget * > targets)
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:1379
short ANIM_get_normalization_flags(SpaceLink *space_link)
Definition anim_draw.cc:353
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_DSLIGHTPROBE
@ 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_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 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:506
float ANIM_UI_get_channel_name_width()
void ANIM_channel_debug_print_info(bAnimContext &ac, bAnimListElem *ale, short indent_level)
void ED_nla_postop_refresh(bAnimContext *ac)
Definition nla_edit.cc:62
void ANIM_animdata_freelist(ListBase *anim_data)
Definition anim_deps.cc:463
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:145
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:739
void ED_operatormacros_action()
Definition action_ops.cc:75
float ANIM_nla_tweakedit_remap(bAnimListElem *ale, float cframe, eNlaTime_ConvertModes mode)
Definition anim_draw.cc:262
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
void animviz_free_motionpath_targets(blender::Vector< MPathTarget * > &targets)
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:47
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)
bool ANIM_animdata_context_getdata(bAnimContext *ac)
void ANIM_deselect_keys_in_animation_editors(bContext *C)
Definition anim_deps.cc:478
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])
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)
void ANIM_center_frame(bContext *C, int smooth_viewtx)
Definition anim_draw.cc:696
void ANIM_nla_mapping_apply_fcurve(AnimData *adt, FCurve *fcu, bool restore, bool only_keys)
Definition anim_draw.cc:312
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:261
bool ANIM_nla_mapping_allowed(const bAnimListElem *ale)
Definition anim_draw.cc:212
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:103
void nla_action_get_color(AnimData *adt, bAction *act, float color[4])
Definition nla_draw.cc:53
size_t ANIM_animdata_filter(bAnimContext *ac, ListBase *anim_data, eAnimFilter_Flags filter_mode, void *data, eAnimCont_Types datatype)
void ANIM_anim_channels_select_toggle(bAnimContext *ac)
short ANIM_channel_setting_get(bAnimContext *ac, bAnimListElem *ale, eAnimChannel_Settings setting)
void ANIM_nla_mapping_apply_if_needed_fcurve(bAnimListElem *ale, FCurve *fcu, bool restore, bool only_keys)
Definition anim_draw.cc:339
void ANIM_fmodifiers_copybuf_free()
bool(*)(const bContext *C, PanelType *pt) PanelTypePollFn
void animviz_calc_motionpaths(Depsgraph *depsgraph, Main *bmain, Scene *scene, blender::MutableSpan< MPathTarget * > targets, eAnimvizCalcRange range, bool restore)
void ED_keymap_anim(wmKeyConfig *keyconf)
Definition anim_ops.cc:1432
void ANIM_list_elem_update(Main *bmain, Scene *scene, bAnimListElem *ale)
Definition anim_deps.cc:52
void animviz_build_motionpath_targets(Object *ob, blender::Vector< MPathTarget * > &r_targets)
eAnimEditDraw_CurrentFrame
@ DRAWCFRA_WIDE
@ DRAWCFRA_UNIT_SECONDS
float ANIM_UI_get_channel_button_width()
void ANIM_draw_previewrange(const Scene *scene, View2D *v2d, int end_frame_width)
Definition anim_draw.cc:75
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:562
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)
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:142
void ED_drivers_editor_init(bContext *C, ScrArea *area)
void ANIM_animdata_update(bAnimContext *ac, ListBase *anim_data)
Definition anim_deps.cc:356
eAnimUnitConv_Flags
@ ANIM_UNITCONV_NORMALIZE
@ ANIM_UNITCONV_ONLYSEL
@ ANIM_UNITCONV_ONLYKEYS
@ ANIM_UNITCONV_SELVERTS
@ ANIM_UNITCONV_NONE
@ ANIM_UNITCONV_NORMALIZE_FREEZE
@ ANIM_UNITCONV_RESTORE
const bAnimChannelType * ANIM_channel_get_typeinfo(const bAnimListElem *ale)
void ANIM_draw_framerange(Scene *scene, View2D *v2d)
Definition anim_draw.cc:109
#define C
Definition RandGen.cpp:29
ReportList * reports
Definition WM_types.hh:1025
BMesh const char void * data
BPy_StructRNA * depsgraph
#define active
#define out
#define filter
Definition DNA_ID.h:404
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)
void(* setting_post_update)(Main &bmain, const bAnimListElem &ale, eAnimChannel_Settings setting)
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:139