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
8
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/* -------------------------------------------------------------------- */
61
87
133
135
136/* -------------------------------------------------------------------- */
139
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
332
333/* -------------------------------------------------------------------- */
336
337/* filtering flags - under what circumstances should a channel be returned */
397
399
400/* -------------------------------------------------------------------- */
403
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
490
491/* -------------------------------------------------------------------- */
494
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
511
512/* -------------------------------------------------------------------- */
515
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
568
569/* -------------------------------------------------------------------- */
572
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/* -------------------------------------------------------------------- */
663
669float ANIM_UI_get_channels_total_height(View2D *v2d, int item_count);
672
674
675/* -------------------------------------------------------------------- */
678
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
710
711/* -------------------------------------------------------------------- */
714
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,
766 void *channel_data,
767 eAnim_ChannelType channel_type);
768
773
779
780/* ************************************************ */
781/* DRAWING API */
782/* `anim_draw.cc` */
783
785
786/* -------------------------------------------------------------------- */
791
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
808
809/* -------------------------------------------------------------------- */
814
818void ANIM_draw_previewrange(const bContext *C, View2D *v2d, int end_frame_width);
819
821
822/* -------------------------------------------------------------------- */
827
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
846
847/* -------------------------------------------------------------------- */
850
853
857
859using PanelTypePollFn = bool (*)(const bContext *C, PanelType *pt);
861using uiListPanelIDFromDataFunc = void (*)(void *data_link, char *r_idname);
862
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
879
880/* -------------------------------------------------------------------- */
883
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
906
907/* -------------------------------------------------------------------- */
910
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
943
944/* -------------------------------------------------------------------- */
950
955void nla_action_get_color(AnimData *adt, bAction *act, float color[4]);
956
958
959/* -------------------------------------------------------------------- */
962
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
988
989/* -------------------------------------------------------------------- */
992
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
1026
1027/* -------------------------------------------------------------------- */
1030
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
1072
1073/* `anim_deps.cc` */
1074
1075/* -------------------------------------------------------------------- */
1078
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
1107
1108/* -------------------------------------------------------------------- */
1111
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
1128
1129/* -------------------------------------------------------------------- */
1132
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
Group Output data from inside of a node group A color picker Mix two input colors RGB to Convert a color s luminance to a grayscale value Generate a normal vector and a dot product Brightness Control the brightness and contrast of the input color Vector Map input vector components with curves Camera Retrieve information about the camera and how it relates to the current shading point s position Clamp a value between a minimum and a maximum Vector Perform vector math operation Invert Invert a color
#define C
Definition RandGen.cpp:29
BPy_StructRNA * 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
DO_INLINE void filter(lfVector *V, fmatrix3x3 *S)
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