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)
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))
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))
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))
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)))
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)))
441#define SEL_ACTC(actc) ((actc->flag & ACT_SELECTED))
442#define EXPANDED_ACTC(actc) ((actc->flag & ACT_COLLAPSED) == 0)
444#define EXPANDED_DRVD(adt) ((adt->flag & ADT_DRIVERS_COLLAPSED) == 0)
445#define EXPANDED_ADT(adt) ((adt->flag & ADT_UI_EXPANDED) != 0)
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)
459#define EDITABLE_SHAPEKEY(kb) ((kb->flag & KEYBLOCK_LOCKED) == 0)
460#define SEL_SHAPEKEY(kb) (kb->flag & KEYBLOCK_SEL)
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)
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)
477#define SEL_NLT(nlt) (nlt->flag & NLATRACK_SELECTED)
478#define EDITABLE_NLT(nlt) ((nlt->flag & NLATRACK_PROTECTED) == 0)
481#define EXPANDED_MCLIP(clip) (clip->flag & MCLIP_DATA_EXPAND)
484#define EXPANDED_PALETTE(palette) (palette->flag & PALETTE_DATA_EXPAND)
487#define SEL_ANIMDATA(adt) (adt->flag & ADT_UI_SELECTED)
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))
508#define NLATRACK_NAMEWIDTH (10 * U.widget_unit)
707 size_t channel_index);
872 const char *modifier_panel_prefix,
875 const char *modifier_panel_prefix,
1037#define ACHANNEL_SET_FLAG(channel, smode, sflag) \
1039 if (smode == ACHANNEL_SETFLAG_INVERT) { \
1040 (channel)->flag ^= (sflag); \
1042 else if (smode == ACHANNEL_SETFLAG_ADD) { \
1043 (channel)->flag |= (sflag); \
1046 (channel)->flag &= ~(sflag); \
1057#define ACHANNEL_SET_FLAG_NEG(channel, smode, sflag) \
1059 if (smode == ACHANNEL_SETFLAG_INVERT) { \
1060 (channel)->flag ^= (sflag); \
1062 else if (smode == ACHANNEL_SETFLAG_ADD) { \
1063 (channel)->flag &= ~(sflag); \
1066 (channel)->flag |= (sflag); \
#define ENUM_OPERATORS(_type, _max)
@ ACHANNEL_SETFLAG_TOGGLE
@ ACHANNEL_SETFLAG_EXTEND_RANGE
@ ACHANNEL_SETFLAG_INVERT
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()
short ANIM_get_normalization_flags(SpaceLink *space_link)
AnimData * ANIM_nla_mapping_get(bAnimContext *ac, bAnimListElem *ale)
void ED_keymap_animchannels(wmKeyConfig *keyconf)
@ ANIMTYPE_SPECIALDATA__UNUSED
@ ANIMTYPE_GREASE_PENCIL_DATABLOCK
@ ANIMTYPE_GREASE_PENCIL_LAYER
@ ANIMTYPE_FILLACT_LAYERED
@ ANIMTYPE_GREASE_PENCIL_LAYER_GROUP
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()
float ANIM_UI_get_channel_name_width()
void ED_nla_postop_refresh(bAnimContext *ac)
void ANIM_animdata_freelist(ListBase *anim_data)
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)
void ANIM_frame_channel_y_extents(bContext *C, bAnimContext *ac)
rctf ANIM_frame_range_view2d_add_xmargin(const View2D &view_2d, rctf view_rect)
void ED_operatormacros_action()
const bAnimChannelType * ANIM_channel_get_typeinfo(bAnimListElem *ale)
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)
@ ALE_GREASE_PENCIL_GROUP
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)
void ANIM_draw_cfra(const bContext *C, View2D *v2d, short flag)
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)
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)
void ANIM_nla_mapping_apply_fcurve(AnimData *adt, FCurve *fcu, bool restore, bool only_keys)
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)
FCurve * ANIM_graph_context_fcurve(const bContext *C)
@ ACHANNEL_SETTING_ALWAYS_VISIBLE
@ ACHANNEL_SETTING_PINNED
@ ACHANNEL_SETTING_PROTECT
@ ACHANNEL_SETTING_VISIBLE
@ ACHANNEL_SETTING_EXPAND
@ ACHANNEL_SETTING_MOD_OFF
@ ACHANNEL_SETTING_SELECT
bAction * ANIM_channel_action_get(const bAnimListElem *ale)
void ANIM_id_update(Main *bmain, ID *id)
void nla_action_get_color(AnimData *adt, bAction *act, float color[4])
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)
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)
void ANIM_list_elem_update(Main *bmain, Scene *scene, bAnimListElem *ale)
eAnimEditDraw_CurrentFrame
float ANIM_UI_get_channel_button_width()
@ 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)
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)
@ ANIMFILTER_DATA_VISIBLE
@ ANIMFILTER_CURVE_VISIBLE
@ ANIMFILTER_LIST_VISIBLE
@ ANIMFILTER_LIST_CHANNELS
@ ANIMFILTER_TMP_IGNORE_ONLYSEL
void ANIM_fmodifier_panels(const bContext *C, ID *owner_id, ListBase *fmodifiers, uiListPanelIDFromDataFunc panel_id_fn)
void ED_operatormacros_nla()
void ED_drivers_editor_init(bContext *C, ScrArea *area)
void ANIM_animdata_update(bAnimContext *ac, ListBase *anim_data)
@ ANIM_UNITCONV_NORMALIZE
@ ANIM_UNITCONV_NORMALIZE_FREEZE
void ANIM_draw_framerange(Scene *scene, View2D *v2d)
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
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
eAnim_Update_Flags update